Shell 笔记之 if 条件判断
好记性,不如烂笔头,下午的时候写一个简单的 Shell 判断脚本,突然卡壳了,不得不借助 Google 才解决了问题。趁着这个机会,复习下 if 条件判断。
本文最后更新于 2019-03-27【2220 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!
好记性,不如烂笔头,下午的时候写一个简单的 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 国际许可协议 进行许可。