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