我正在我的 Lubuntu 系统上尝试一个新的 conky 主题,为了运行它,我需要启动一个 bash 脚本:
#!/bin/bash
#sleep 18&&
conky -c /home/mathijs/conky/conky1&&
sleep 1&&
conky -c /home/mathijs/conky/conky2&&
sleep 1&&
conky -c /home/mathijs/conky/conky3&&
sleep 1&&
conky -c /home/mathijs/conky/conkyxx&&
sleep 1&&
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,终端给了我这个错误:
./start.sh: line 11: syntaxerror: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
然而在脚本中只有 10 行。我手工重写了它,并再次检查,但得到了同样的错误。我错过了什么?
shell 元字符&&期待之后的命令,如果第一个命令成功,它将运行。
这就是您收到错误消息的原因。
例如你sleep 1&&在第 10 行,现在 shell 将运行sleep 1,然后如果它成功(退出代码 0)那么 ( &&) 将运行下一个命令,这不是你提供的。所以你会收到一条unexpected end of file错误信息。
此外,我认为您打算使用&而不是&&.
&将前台进程带到后台,这样你就可以在前台做一些其他的事情。此外,这可能不是一个好主意sleep命令(尽管取决于用例),因为sleep打算暂停脚本或终端中命令的执行一段提到的时间,如果您通过添加&例如sleep 1&下一个将其带到后台命令将立即运行,因为在这种情况下执行顺序不会同步。