和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法):
if(isset($_GET["q"])){search(q);}else{// 不做任何事情}
在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。我们来看下在shell中,if 语句语法格式:
ifcondition
thencommand1
command2
...commandN
fi
写成一行(适用于终端命令提示符):
if[$(ps -ef |grep -c "ssh")-gt 1];thenecho "true";fi
末尾的fi就是if倒过来拼写,后面还会遇到类似的。来看下if else 语法格式:
ifcondition
thencommand1
command2
...commandN
elsecommand
fi
再来看下if else-if else 语法格式:
ifcondition1
thencommand1
elifcondition2
thencommand2
elsecommandN
fi
以下实例判断两个变量是否相等:
a=10b=20if[$a ==$b ]thenecho "a 等于 b"elif[$a -gt $b ]thenecho "a 大于 b"elif[$a -lt $b ]thenecho "a 小于