0

While executing the below script, I'm getting an error:

Syntax error at line 1 : `(' is not expected.
sudo su - user1 -c "cd $HOME ; tar -cvf $HOME/mine.tar `cat /tmp/$LOGNAME/List`  "

where List file contains the name of some other files.

Please help me out with some solution.

4

2 回答 2

2

看起来您的 List 文件可能包含一个带有特殊字符的文件名,当您执行该cat命令时该字符未正确转义。尝试使用-T参数将 List 文件传递​​给 tar,这样就不必在命令行上扩展文件名:

tar -cvf $HOME/mine.tar -T /tmp/$LOGNAME/List
于 2013-06-25T20:50:51.857 回答
1

不要cat用于生成文件列表。tar通常支持--from-file( -T) 选项直接处理列表中的文件:

sudo su - user1 -c "cd $HOME ; tar -cvf $HOME/mine.tar --files-from /tmp/$LOGNAME/List"

如果您的 tar 版本没有,请考虑使用 xargs 代替:

sudo su - user1 -c "cd $HOME ; xargs tar -cvf $HOME/mine.tar < /tmp/$LOGNAME/List"
于 2013-06-25T20:50:52.837 回答