UNIX Shell 脚本

UNIX Shell 脚本

执行以下脚本时出现错误:

第 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

相关内容