本文最后更新于 2019-03-27【1857 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

好记性,不如烂笔头,下午的时候写一个简单的 Shell 判断脚本,突然卡壳了,不得不借助 Google 才解决了问题。趁着这个机会,复习下 if 条件判断。

Linux Shell

基本格式

和其他的编程语言一样,Shell 中的 if 判断也有固定的格式,均是 if...fi 的形式。

基本格式

一个完整的 if 判断执行的基本格式,分条件成立与不成立时分别执行:

if [ condition ];then
    do success-scripts
else
    do failure-scripts
fi

简化格式

一个简化的 if 判断执行语句,只在条件成立执行:

if [ condition ];then
    do success-scripts
fi

多重判断格式

需要进行多重判断的 if 语句,在不同条件成立下执行不同的语句:

if [ condition1 ];then
    do success-scripts1
elif [ condition2 ];then
    do failure-scripts2
else
    do failure-scripts
fi

条件判断语句

条件判断语句是放在 [] 里面的,并且 [ 后与 ] 前均有空格,一些常用的判断语法如下:

字符串判断

语法含义
str1 = str2当两个串有相同内容、长度时为真
str1 != str2当串str1和str2不等时为真
-n str1   当串的长度大于0时为真(串非空)
-z str1   当串的长度为0时为真(空串)
str1     当串str1为非空时为真

数值判断

语法含义
int1 -eq int2两数相等为真
int1 -ne int2两数不等为真
int1 -gt int2int1大于int2为真
int1 -ge int2int1大于等于int2为真
int1 -lt int2int1小于int2为真
int1 -le int2int1小于等于int2为真

文件判断

语法含义
-r file用户可读为真
-w file用户可写为真
-x file用户可执行为真
-f file文件为正规文件为真
-d file文件为目录为真
-c file文件为字符特殊文件为真
-b file文件为块特殊文件为真
-s file文件大小非0时为真
-t file当文件描述符(默认为1)指定的设备为终端时为真

复杂逻辑判断

语法含义
-a
-o
!

判断上次程序是否执行成功

在 Shell 脚本里面有时候我们需要判断上一个程序有没有执行成功,我们可以用通过 if [ $? != 0 ]判断,$? 表示上一次运行的结果。博主就是在这个卡壳了。。。

一个例子

代码:

#!/bin/bash
runtest()
{
    return 2;    
}

runtest
result=$?
echo "result is:"$result
echo "Quanyin"
if [ $? != 0 ]; then
    echo "last exe fail"
    exit 1
else
    echo "last exe success"
fi

运行结果

result is:2
Quanyin
last exe success

参考

  • 鸟哥的 Linux 私房菜:基础学习篇 第四版
文章目录


推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:Shell 笔记之 if 条件判断 - https://www.imtqy.com/shell-if.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!