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 个参数的命令:2
、then
、echo
和,作为语句部分fi
中的第一个命令。if
if/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