Shell脚本if else语句小结

和Java、PHP等语言不一样,sh的流程控制不可为空,如:


<?php

if (isset($_GET["q"])) {

    search(q);

}

else {

    //do nothing

}

?>

在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else,就像这样:


if condition

then

    command1

    command2

    ...

    commandN

fi

当然,也可以写成一行(适用于终端命令提示符),像这样:


if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;

末尾的fi就是if倒过来拼写,后面还会遇到类似的。

if else格式


if condition

then

    command1

    command2

    ...

    commandN

else

    command

fi

if else-if else格式


if condition1

then

    command1

elif condition2

    command2

else

    commandN

fi

if else语句经常与test命令结合使用,如下所示:


num1=$[2*3]

num2=$[1+5]

if test $[num1] -eq $[num2]

then

    echo 'The two numbers are equal!'

else

    echo 'The two numbers are not equal!'

fi

输出:
The two numbers are equal!