Shell

Shell Script(四):条件分支语句 1

2018-12-23  本文已影响32人  蓝天白云bubble

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

       这篇文章中主要讲解三个命令:if、test、exit 。
       一、if 命令介绍
       if 命令根据其后面命令的退出状态来做出相应的决定。其语法格式如下:

if commands; then
commands
[elif commands; then
commands...]
[else
commands]
fi

       咋一看上去有点不理解,这不用担心,后面会有实例演示。
       先说一下命令的退出状态,每个命令在执行后都会有一个相应的退出状态,用 0 ~ 255 中的某个数字来表示,0 表示该命令执行成功,其他数字表示命令执行失败。接下来通过一个实例来感受一下:

jason@jason-Lenovo-Y50-70:~$ ls -d /usr/bin
/usr/bin
jason@jason-Lenovo-Y50-70:~$ echo $?
0
jason@jason-Lenovo-Y50-70:~$ ls -d /bin/usr
ls: cannot access /bin/usr: No such file or directory
jason@jason-Lenovo-Y50-70:~$ echo $?
2

       在这个实例中可以看到,命令 “ls -d /usr/bin” 成功执行,然后通过 “echo $?” 来查看命令 “ls -d /usr/bin” 的退出状态,由于该命令成功执行,所以这里得到的退出状态是 0 。而对于命令 “ls -d /bin/usr” ,由于该命令执行失败,所以得到的退出状态不是 0 。
       另外需要说一下,在 Shell 中有两个很简单的命令: true 和 false 。true 命令对应的退出状态是 0 ,false命令对应的退出状态是 1 。演示如下:

jason@jason-Lenovo-Y50-70:~$ true
jason@jason-Lenovo-Y50-70:~$ echo $?
0
jason@jason-Lenovo-Y50-70:~$ false
jason@jason-Lenovo-Y50-70:~$ echo $?
1
jason@jason-Lenovo-Y50-70:~$ if true; then echo "It's true."; fi
It's true.
jason@jason-Lenovo-Y50-70:~$ if false; then echo "It's true."; fi
jason@jason-Lenovo-Y50-70:~$

       只有当 if 后面命令的退出状态是 0 的时候,then 后面的命令才会被执行。

       二、test 命令介绍
       test 命令一般和 if 命令配合使用,test 命令用来得到一个表达式结果是真还是假,如果 test 后面的表达式为真,则 test 命令的退出状态是 0 ,否则是 1 。test 命令有两种形式的写法,如下:

# First form
test expression

# Second form
[ expression ]

       第二种形式的写法虽然没有明确写出 test 这个关键字,但它确实就是 test 命令的一种形式 。在第二种形式的写法中还需要注意的一点:方括号和其内部的表达式之间的空格不能省略。

错误写法:
[expression]

正确写法:
[ expression ]

       说到了 test 命令,这里必须要提一下 test 后面常用的一些表达式,这些表达式可以通过在命令行中执行 help test 命令来获取,其使用方式很简单。下面来看一个使用 test 的实例:

# Alternate form

if [ -f .bash_profile ]
then
    echo "You have a .bash_profile. Things are fine."
else
    echo "Yikes! You have no .bash_profile!"
fi

# Another alternate form

if [ -f .bash_profile ]
then echo "You have a .bash_profile. Things are fine."
else echo "Yikes! You have no .bash_profile!"
fi

       “-f .bash_profile” 表达式的意思是说如果当前目录下有 .bash_profile 文件,则该表达式的结果是真,否则为假。另外,通过执行 help test 命令也可以看到 -f FILE 表达式的作用,现将 -f FILE 表达式在 help test 结果中的介绍粘贴在下面:

-f FILE        True if file exists and is a regular file.

       三、exit 命令
       在 Shell 脚本中,exit 命令总能够让脚本在执行到这里时立即退出,同时产生一个跟在 exit 后面的退出状态码,如:“exit 0” 或 “exit 2” 等。

相关文档

http://linuxcommand.org/lc3_wss0080.php

上一篇:Shell Script(三):变量、常量和捕获命令结果

上一篇 下一篇

猜你喜欢

热点阅读