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

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

if then 的正确格式是什么?
我尝试了很多品种。
当不在程序中时,该格式是否应该在命令行上工作?

$ if [1==2] then echo "y" fi;
> ;
-bash: syntax error near unexpected token `;'

答案1

还没有人解释这个错误。

你登录了:

if [1==2] then echo "y" fi;
;

就 shell 而言,第一行是完全有效的语法。它的形式如下:

if cmd args

在本例中,cmd源自[1==2]glob 的扩展。是一种通配模式,它扩展到当前目录中名称由,或字符[1==2]组成的文件列表。1=2

例如,如果2当前目录中有一个文件被调用,则变为:

如果 2 则回显 fi;

即运行2带有 4 个参数的命令:2thenecho和,作为语句部分fi中的第一个命令。ifif/then/elif/else/fi

错误来自;第二行的那一秒。如果您;在命令行中单独输入该错误消息,则会收到相同的错误消息。;必须用于分隔命令,不能像这样单独使用。

答案2

bash 构造的正确形式if

if something; then command; fi

您似乎正在尝试做的事情的正确形式是

if [ 2 -eq 2 ]; then echo "y"; fi;

空格在 bash 中很重要。

答案3

试试这个:

if [ 1 == 2 ]; then echo "y" ; fi

最好使用-eq,除非您想将 1 和 2 作为字符串进行比较。

有用的链接:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

答案4

==Bash 中不存在该运算符。它要么-eq在比较数字时,要么=在比较字符串时。

if [ 1 -eq 2 ]; then echo 'y'; fi

相关内容