打字后;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
在本例中,它是命令语法的一部分。