简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
这篇文章中主要讲解三个命令: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” 等。
网友评论