首页 理论教育 LinuxShell编程条件测试if

LinuxShell编程条件测试if

时间:2023-11-18 理论教育 版权反馈
【摘要】:条件判断if的基本格式如下:该结构可以写在同一行,格式为:if后面的命令退出状态为0时,then与fi之间的命令被执行;if后面的命令退出状态为非0时,then与fi之间的命令不被执行。运行score_1.sh,输入86,则显示Pass:结合5.1.8节的内容,可以修改脚本score_1.sh为如下内容,效果是不变的:有人会认为if的基本格式应该写为“if[条件判断];then…”,而不是“if命令;then…”。

LinuxShell编程条件测试if

条件判断if的基本格式如下:

978-7-111-48202-4-Chapter05-70.jpg

该结构可以写在同一行(这时关键字then和fi前面的分号不能省略),格式为:

978-7-111-48202-4-Chapter05-71.jpg

if后面的命令退出状态为0时,then与fi之间的命令被执行;if后面的命令退出状态为非0时,then与fi之间的命令不被执行。其流程如图5-1所示。

978-7-111-48202-4-Chapter05-72.jpg

图5-1 if的流程图

在if结构中,常用中括号形式的条件判断命令,很少用test命令。例如,下面的脚本score_1.sh,判断读入的分数,如果不低于60分则显示及格。

978-7-111-48202-4-Chapter05-73.jpg

运行score_1.sh,输入86,则显示Pass:

978-7-111-48202-4-Chapter05-74.jpg

结合5.1.8节的内容,可以修改脚本score_1.sh为如下内容,效果是不变的:

978-7-111-48202-4-Chapter05-75.jpg

978-7-111-48202-4-Chapter05-76.jpg(www.xing528.com)

有人会认为if的基本格式应该写为“if[条件判断];then…”,而不是“if命令;then…”。写为if[条件判断]不能算错,也更容易理解。但是,if后面可以是任何命令,不一定都是条件判断命令,只要命令的退出状态为0(成功),then与fi之间的命令就被执行。下面举例说明,当前目录下有文件paper1.txt:

978-7-111-48202-4-Chapter05-77.jpg

脚本paper_copy.sh的作用是,将文件paper1.txt复制为paper2.txt,如果复制成功则打印copysuccessfully:

978-7-111-48202-4-Chapter05-78.jpg

运行脚本paper_copy.sh,屏幕输出copy successfully,说明复制成功了:

978-7-111-48202-4-Chapter05-79.jpg

查询一下,果然复制成功了:

978-7-111-48202-4-Chapter05-80.jpg

脚本paper_copy.sh中的cp命令也有可能失败,这时脚本不会打印copy successfully,但是cp命令失败的信息会显示出来。例如,假设paper1.txt不存在,会显示如下信息:

978-7-111-48202-4-Chapter05-81.jpg

如果用户希望:复制成功就看见copy successfully,不成功就什么也不显示,则将标准错误重定向到“黑洞”即可,脚本改为:

978-7-111-48202-4-Chapter05-82.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈