我是 bash 脚本的新手,现在尝试使用它制作备份文件。我面临的是下面的脚本(我的 bash 文件中的第 47 行),
$(tar -czvPf ${folder_backup}/rajal/backup.tgz -C /var/www/tmk/app .)
总是给 shell 上的错误./test: line 47: ./: Is a directory
,而它在终端上工作得很好。
仅供参考,文件夹应用程序是包含文件和子文件夹的文件夹。
有人可以帮我吗?感谢您的任何帮助。
$(command)
意思是:执行command
并返回它的输出。为了说明,它经常这样使用:
result=$(foo 4 123)
评估后,result
将保存任何命令foo 4 123
输出。
如果您直接使用该构造 - 不是作为另一个命令的参数,或者在变量赋值中,shell 将尝试执行命令的输出。虽然有时需要这样做,但通常不是,这就是您所看到的。
因此,只需$( )
从您的命令中删除并tar
直接运行。如果要捕获 的输出tar
,请将其重定向到文件或使用上面的构造。
请注意,$(command)
并且${env_var_name}
是完全不同的。语法很重要。
就像@Mat 一样Why do you have $( ) around the tar?
,所以我刚刚删除了它,它现在可以工作了:D