0

我是 bash 脚本的新手,现在尝试使用它制作备份文件。我面临的是下面的脚本(我的 bash 文件中的第 47 行),

$(tar -czvPf ${folder_backup}/rajal/backup.tgz -C /var/www/tmk/app .)

总是给 shell 上的错误./test: line 47: ./: Is a directory,而它在终端上工作得很好。

仅供参考,文件夹应用程序是包含文件和子文件夹的文件夹。

有人可以帮我吗?感谢您的任何帮助。

4

2 回答 2

1
$(command)

意思是:执行command并返回它的输出。为了说明,它经常这样使用:

result=$(foo 4 123)

评估后,result将保存任何命令foo 4 123输出。

如果您直接使用该构造 - 不是作为另一个命令的参数,或者在变量赋值中,shell 将尝试执行命令的输出。虽然有时需要这样做,但通常不是,这就是您所看到的。

因此,只需$( )从您的命令中删除并tar直接运行。如果要捕获 的输出tar,请将其重定向到文件或使用上面的构造。


请注意,$(command)并且${env_var_name}是完全不同的。语法很重要。

于 2012-12-12T11:01:01.350 回答
0

就像@Mat 一样Why do you have $( ) around the tar?,所以我刚刚删除了它,它现在可以工作了:D

于 2012-12-12T10:57:37.967 回答