Bash 第 11 行出现“意外的文件结束”,但实际上没有第 11 行

Bash 第 11 行出现“意外的文件结束”,但实际上没有第 11 行

我正在 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&&期望有其他的东西。

如果删除最后一个&&,则不会出现错误。

相关内容