Shell 笔记之 if 条件判断
好记性,不如烂笔头,下午的时候写一个简单的 Shell 判断脚本,突然卡壳了,不得不借助 Google 才解决了问题。趁着这个机会,复习下 if 条件判断。
 本文最后更新于 2019-03-27【2407 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!
好记性,不如烂笔头,下午的时候写一个简单的 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 int2 | int1大于int2为真 | 
| int1 -ge int2 | int1大于等于int2为真 | 
| int1 -lt int2 | int1小于int2为真 | 
| int1 -le int2 | int1小于等于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 私房菜:基础学习篇 第四版
 
本文作者:Quanyin Tang
本文链接:Shell 笔记之 if 条件判断 - https://www.imtqy.com/shell-if.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
 

