shell中的if条件表达式

今天看到tar2rpm.sh脚本中对g++的检查,忽然发现和我平时的写法不一样,后来看了一下bash的manual中关于if的描述,才发现其实都一样的。判断一个命令是否存在,我平时一般的做法是现执行这个命令,然后if [ $? = 0 ]来判断其返回值;其实,直接if your_command; then.. 这样也是一样。有时候,写shell写了不少,但是最基本却没理解清楚。
man bash中关于if的描述如下。
if list; then list; [ elif list; then list; ] … [ else list; ] fi
The if list is executed. If its exit status is zero, the then list is executed. Otherwise, each elif list is executed in turn, and if its exit status is zero, the corresponding then list is executed and the command completes. Otherwise, the else list is executed, if present.The exit status is the exit status of the last command executed, or zero if no condition tested true.
if your_command; then.. 会现执行your_command,如果返回值为0,则会执行then后的语句;否则会执行后面的elif或者else后的语句(如果有的话)。

另外,曾经写过一篇关于test测试条件表达式的真假的文章也和这些有点关系的。

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注