shell脚本之条件测试与判断
2017-12-23 16:46
519 查看
(一)条件测试,与C语言相反,表达式为真时为0,为假时为非0.其测试语法为:test exp 或 [ exp ]
(1)字符串测试string 为空时是非0,空时为0,只有test才能使用
-z string 判断是否为空串,空为0,不空为非零
-n string 判断是否为空串,空为非0,不空为零
str1 != str2 判断两个字符串是否不等
str1 = str2 判断是否相等
(2)整数测试
num1 -eq num2 相当于=
num1 -ne num2 相当于!=
num1 -lt num2相当于<
num1 -gt num2 相当于>
num1 -le num2 相当于<=
num1 -ge num2 相当于>=
(3)文件测试
-a 文件是否存在
-e 同上
-r 文件存在,文件是否有读权限
-w 文件存在,文件是否有写权限
-x 文件存在,文件是否有执行权限
-d 文件存在,文件是否是目录
-L 文件存在,文件是否是链接文件
-c 文件存在,文件是否是字符文件
-b 文件存在,文件是否是块文件
-f 文件存在,文件是否是普通文件
-s 文件存在,文件的长度是否大于0或者为非空文件,如果是非空文件,结果为0
(4)逻辑操作符
!exp 逻辑非
exp1 -o exp2 逻辑或,两个表达式只要有一个为真即为真。
exp1 -a exp2 逻辑与,两个表达式只要有一个为假即为假。
例如:
tset “a"−gt20−aa -lt 50
[ -a filename -a -w filename ]
(二)条件判断语句
(1)ifif exp then statement ... else statement ... fi
或者
if exp then statement ... elif exp ; then statement ... elif exp statement ... else statement ... fi
例如输出成绩等级:
#!/bin/bash echo "please input your scores :" read score if [ -z $score ]; then echo "you can not input kong string" exit 1 else if [ $score -lt 0 -o $score -gt 100 ]; then echo "please input true score" read score else if [ $score -gt 90 ];then echo "A" else if [ $score -gt 80 ];then echo "B" else if [ $score -gt 70 ];then echo "C" else echo "D" fi fi fi fi fi
(2)case语句,形如:
case var in a) statement ... ;; b) statement ... ;; . . . *) statement ... ;; esac
例如:
read -p "please in a key:" key if [ -z $key ] then echo "you do not input key" exit 1 fi case $key in [1-9]) echo "digit key" ;; [[:lower:]]) 4000 echo "lower key" ;; [[:upper:]]) echo "upper key" ;; *) echo "other key" ;; esac
(三)循环语句
(1)forfor val in 1 2 3 4 ... do statement ... done
或
for val in {1..8} do statement ... done
或
for val in {str1 str2 ....}//$(ls) do statement ... done
或
for ((i=0;i<n; i++)) do statement ... done
例如九九乘法表:
#! /bin/bash i=1 for (( i=1; i<=9; i++ )) do for (( j=1; j<=$i; j++ )) do printf "$i*$j=$(($i*$j))" if [ $(($i*$j)) -gt 9 ] then printf " " else printf " " fi done echo " " done
(2)while
while [ exp ] do statement ... done
(3)until
until [ exp ] do statement ... done
例如批量添加用户:
#! /bin/bash i=1 until [ $i -eq 21 ] do useradd user$i echo "password" | passwd -stdin user$i >/dev/null let "i++" done
相关文章推荐
- shell脚本编程之条件判断,算术运算,整数测试及特殊变量
- shell脚本编程之条件测试和判断
- Shell脚本笔记(四)条件判断
- Linux新手生存笔记[9]——shell脚本基础2-条件测试及控制流
- Shell笔记3——脚本的条件测试与比较
- shell脚本条件判断
- Linux新手生存笔记[9]——shell脚本基础2-条件测试及控制流
- Linux学习(九)-----shell脚本学习 条件判断和循环
- Shell脚本IF条件判断和判断条件总结
- Shell脚本的条件判断与比较
- day 70 shell脚本逻辑、条件判断
- shell脚本中的if判断条件 详解
- shell脚本中的算术运算和条件测试语句
- bash脚本编程之条件判断及测试
- shell脚本编程之条件测试——test
- shell--条件判断与测试
- 脚本入门:shell变量和条件测试
- Shell脚本IF条件判断和判断条件总结
- shell编程--shell脚本测试条件
- shell中的条件判断if和测试