;ls bash:意外标记“;”附近出现语法错误

;ls bash:意外标记“;”附近出现语法错误

打字后;ls

我得到了这个回报 -bash: syntax error near unexpected token `;'

我该如何解决?

答案1

分号终止命令。通常你不需要它,因为换行符就可以了。但是您可以使用将多个命令放在一行上,例如

$ echo -n "hi "; echo there
hi there

或者也许更有用:

if [ whatever ]; then

在行首放置分号会在其前面留下一个“空”命令,显然 shell 语法禁止这样做。 Yash 给出了一条有用的错误消息:

$ yash -c '; echo hi'
yash -c:1: syntax error: a command is missing before ‘;’

Ksh 和 Zsh 似乎只是忽略了这个问题:

$ zsh -c '; echo hi'
hi

(但是你也不能echo foo;;在这些中使用,因为;;is 不同于;, like >is different from >>.;;用于case语句中。)

空命令无论如何都不执行任何操作,因此您可以省略前导分号。或者切换到 Zsh,我猜。

答案2

它与以下语法错误相同:

$ ;
bash: syntax error near unexpected token `;'

这只是意味着cmd在之前应该有一个终止 ;:

$ ls ;

在这种情况下,它;是一个元字符,定义为:

元字符
未加引号时用于分隔单词的字符。

不等同于;复合命令中的 :

if list; then list; else list; fi

在本例中,它是命令语法的一部分。

相关内容