条件判断if的基本格式如下:
该结构可以写在同一行(这时关键字then和fi前面的分号不能省略),格式为:
if后面的命令退出状态为0时,then与fi之间的命令被执行;if后面的命令退出状态为非0时,then与fi之间的命令不被执行。其流程如图5-1所示。
图5-1 if的流程图
在if结构中,常用中括号形式的条件判断命令,很少用test命令。例如,下面的脚本score_1.sh,判断读入的分数,如果不低于60分则显示及格。
运行score_1.sh,输入86,则显示Pass:
结合5.1.8节的内容,可以修改脚本score_1.sh为如下内容,效果是不变的:
(www.xing528.com)
有人会认为if的基本格式应该写为“if[条件判断];then…”,而不是“if命令;then…”。写为if[条件判断]不能算错,也更容易理解。但是,if后面可以是任何命令,不一定都是条件判断命令,只要命令的退出状态为0(成功),then与fi之间的命令就被执行。下面举例说明,当前目录下有文件paper1.txt:
脚本paper_copy.sh的作用是,将文件paper1.txt复制为paper2.txt,如果复制成功则打印copysuccessfully:
运行脚本paper_copy.sh,屏幕输出copy successfully,说明复制成功了:
查询一下,果然复制成功了:
脚本paper_copy.sh中的cp命令也有可能失败,这时脚本不会打印copy successfully,但是cp命令失败的信息会显示出来。例如,假设paper1.txt不存在,会显示如下信息:
如果用户希望:复制成功就看见copy successfully,不成功就什么也不显示,则将标准错误重定向到“黑洞”即可,脚本改为:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。