概述
Shell脚本 - 条件判断
- 一、条件测试
- 二、文件测试
- 三、整数值比较
- 四、字符串比较
- 五、逻辑测试
- 六、判断语句
- if 语句
- if else 语句
- if elif else 语句
- case in语句
一、条件测试
test 条件表达式
举例格式①:
- test 1 == 1
测试 1
是否等于 1
返回值 0
即为true
举例格式②:
- [ 1 == 1 ]
二、文件测试
[ 操作符 文件或目录 ]
常用的测试操作符
- -d 测试是否为目录或者是否存在
- -e 测试文件或目录是否存在
- -f 测试是否为文件
- -r 测试当前用户是否有权限读取
- -w 测试当前用户是否有权限写入
- -x 测试当前用户是否有权限执行
[ 操作符 文件或目录 ] && echo "YES"
举例:
- [ -e a ] & echo “target found”
三、整数值比较
[ 整数1 操作符 整数2 ]
常用的测试测操作符
- -eq 等于
- -ne 不等于
- -gt 大于
- -lt 小于
- -le 小于或等于
- -ge 大于或等于
举例:
[ `who | wc-l` -gt 5 ] && echo "没有超额"
举例:简单的定期巡检
a=`free -m | grep "Mem" | awk '{print $4}'`
[ $a -lt 100 ] && echo "剩余"${a}MB
if [ $a -lt 100 ]
then reboot fi;
四、字符串比较
常用的测试操作符
- = 字符串内容相同
- != 字符串内容不同,!号表示相反的意思
- -z 字符串内容为空
- n 字符串有内容
[ str1 = str2 ]
= 和 == 功能相同
[ str1 != str2 ]变量中的字符串是否不相同
[ -z str1 ] 检查字符串内容为空
空格也是字符串
[ -n str1 ] 检查是否有字符串
变量不加双引号的话就会被当成单纯的字符串去判断
举例:
[ $PWD = `pwd` ] && echo "The current directory is `pwd`"
举例:
[ "en_US" != $LANG ] && echo "not en_US"
五、逻辑测试
[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
常用的测试操作符
- -a 或 && :逻辑与,而且的意思
- -o 或 || :逻辑或,或者的意思
- ! :逻辑否
[ $a -ne 1 ] && [ $a != 2 ] 等同于 [ $a -ne 1 -a $a != 2 ]
举例:
- echo [ “1” == “1” ] && echo “true” || echo “yes”
只要一个成立就不会执行下一个
注意:&&
、||
操作符能够正常存在[[ ]]
条件判断结构中,但是如果出现在一个[ ]
结构中,就会报错
举例:使用PING判断网站是否存货
- -c:发送包的个数
- -i:发送包的时间间隔
- -w:多少秒停止
ping -c 3 -i 0.5 -w 2 baidu.com > /dev/null && echo "$1 online" || echo "$1 off"
ping -c 3 -i 0.5 -w 2 example.com > /dev/null && echo "$1 online" || echo "$1 off"
举例:多次判断:
[ -d /boot ] && [ -r /boot ] && echo "you can read"
六、判断语句
if 语句
条件为 true
时执行 then
后面的部分就会被执行
判断的最后必须加上 fi
来进行闭合
if condition
then
statement1
fi
举例:
(())
是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于等关系运算,以及与、或、非逻辑运算
#!/bin/bash
if ((10 > 1))
then
echo "true"
fi
if else 语句
如果 condition
为 true
,将执行 statement1
,如为 false
,将会执行 statement2
if condition
then
statement1
else
statement2
fi
举例:
#!/bin/bash
read input_1
read input_2
if (( $input_1 == $input_2 ))
then
echo "${input_1}=${inut_2}"
else
echo "${input_1}!=${input_2}"
fi
if elif else 语句
当 condition1
为 true
时,将执行 statement1
,接下来将判断 condition2
,如果为 true
将执行 statement2
,如果从一开始 condition1
就为 false
时 将执行 else
后的语句 statementn3
if condition1
then
statement1
elif condition2
then
statement2
else
statementn3
fi
举例:
#!/bin/bash
if ((10 > 1))
then
echo "1"
elif ((2 > 1))
then
echo "2"
else
echo "3"
fi
case in语句
►case行首必须以单词“in”,每一模式必须以单个右括号")“结束
►双分号”;;“表示命令序列的结束
►模式字符串中,可以用方括号表示一个连续的范围,如”[0-9]";►还可以使用竖杠|表示或,比如a|b
►*)表示默认模式,其中的*相当于通配符
case 变量值 in
判断1)
命令序列
;;
判断2)
命令序列
;;
……
*)
默认命令序列
esac
举例:
read num -p "请输入数字:"
case $num in
1)
echo "1"
;;
2)
echo "2"
;;
*)
echo "error"
esac
最后
以上就是心灵美大门为你收集整理的Shell脚本 - 条件判断 | if else语句结构 | case语句结构 | 超详细一、条件测试二、文件测试三、整数值比较四、字符串比较五、逻辑测试六、判断语句的全部内容,希望文章能够帮你解决Shell脚本 - 条件判断 | if else语句结构 | case语句结构 | 超详细一、条件测试二、文件测试三、整数值比较四、字符串比较五、逻辑测试六、判断语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复