3. 命令列表

命令列表的执行规律

命令列表的执行规律符合逻辑运算的运算规律,用 && 连接起来的命令,如果前者成功返回,将执行后面的命令,反之不然;用 || 连接起来的命令,如果前者成功返回,将不执行后续命令,反之不然。

范例:如果 ping 通 www.lzu.edu.cn,那么打印连通信息

$ ping -c 1 www.lzu.edu.cn -W 1 && echo "=======connected======="

非常有趣的问题出来了,即我们上面已经提到的:为什么要让 C 程序在 main() 函数的最后返回 0 ?如果不这样,把这种程序放入命令列表会有什么样的结果?你自己写个简单的 C 程序,然后放入命令列表看看。

命令列表的作用

有时用命令列表取代 if/then 等条件分支结构可以省掉一些代码,而且使得程序比较美观、易读,例如:

范例:在脚本里判断程序的参数个数,和参数类型

#!/bin/bash

echo $#
echo $1
if [ $# -eq 1 ] && (echo $1 | grep '^[0-9]*$' >/dev/null);then
    echo "YES"
fi

说明:上例要求参数个数为 1 并且类型为数字。

再加上 exit 1,我们将省掉 if/then 结构

#!/bin/bash

echo $#
echo $1
! ([ $# -eq 1 ] && (echo $1 | grep '^[0-9]*$' >/dev/null)) && exit 1

echo "YES"

这样处理后,对程序参数的判断仅仅需要简单的一行代码,而且变得更美观。

小结

这一节介绍了 Shell 编程中的逻辑运算,条件测试和命令列表。