执行以下脚本时出现错误:
第 1 行语法错误:不是预期的“(”。
sudo su - user1 -c "cd $HOME ; tar -cvf $HOME/mine.tar `cat /tmp/$LOGNAME/List` "
其中列表文件包含一些其他文件的名称。
请帮我找到一些解决办法。
问候,Sumit
答案1
你的外壳扩张得太早了。
$LOGNAME
其中有 吗?(
或者 的内容/tmp/$LOGNAME/List
?
Bash 会进行扩展$HOME
,$LOGNAME
在它们被传递给su
- 时,当su
它试图将它们传递给sh
或 时bash
,它们里面含有不正确的标记。
答案2
请将单行命令分成多行并执行,例如将其写入 run.sh
#!/usr/bin/env bash
cd $HOME
tar -cvf $HOME/mine.tar
cat /tmp/$LOGNAME/List
授予执行权限(chmod +x run.sh
)并运行该脚本sh path to the file(run.sh)
例如:sh /home/run.sh