我正在 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&&
当我运行脚本时,终端出现以下错误:
./start.sh: line 11: syntaxerror: unexpected end of file
但脚本中只有 10 行。我手写重写并再次检查,但仍然出现相同的错误。我遗漏了什么?
答案1
shell 元字符&&
期望随后有一个命令,如果第一个命令成功执行,该命令就会运行。
这就是您收到错误消息的原因。
例如sleep 1&&
,在第 10 行,shell 将运行sleep 1
,然后如果成功(退出代码 0),则 ( &&
) 将运行下一个命令,而该命令不是由您提供的。因此,您将收到一条unexpected end of file
错误消息。
另外我认为您的意思是使用&
而不是&&
。
&
将前台进程移至后台,这样您就可以在前台执行其他操作。另外,这可能不是sleep
命令的好主意(但取决于用例),因为它sleep
旨在暂停脚本或终端中命令的执行,持续时间为上述时间,如果您通过添加将其移至后台,&
例如,sleep 1&
下一个命令将立即运行,因为在这种情况下执行顺序不会同步。
答案2
最后一个命令sleep 1&&
期望有其他的东西。
如果删除最后一个&&
,则不会出现错误。