Shell 笔记之 if 条件判断

2019-03-27T22:04:00

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

基本格式

和其他的编程语言一样,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 私房菜:基础学习篇 第四版
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »