条件判断式
if..then、case..esac
if..then 是最常见的条件判断式,就是当某个条件判断成立的时候,就进行某项工作 ,其中"&&"代表AND,"||"代表or
if....then..else...fi
格式:
if [条件判断语句]; then 当条件判断成立时,可以进行的工作内容; fi // 结束if条件判断
例子:设定 A=3,判断,如果A要是等于3,就会显示3
if [ $A = 3 ]; then ehco "true" fi
1、当条件不满足时的条件判断
if [ $A = 3 ]; then echo "true" // 当A=3的时候就显示true else echo "error" // 当A不等于3的时候就显示error fi
2、当多个条件判断时 if..then..elif...then..fi
if [ $A = 3 ];then echo "3" // 当A等于3的时候,就显现3 elif [ $A = 4 ]; then echo "4" // 当A等于4的时候,就显现4 elif [ $A = 5 ];then echo "5" // 当A等于5的时候,就显现5 else echo "error" // 当A即不等于3也不等于4也不等于5的时候,就显现error fi
3、当多层次的条件判断时,而且有多个既定的变量内容,就可以用到case..in..esac。它的语法如下:
case $变量名称 in "第一个变量取值") 语句 ;; // 每个判断语句结束都要有双分号隔开 "第二个变量取值") 语句 ;; *) // 其它变量的取值*号表示 语句 exit ;; esac // case的结尾
例:假如A在2、3这2个数之间取值,假如A等于2就显示2,等于3就显示3,既不是2也不是3就显示other
read -p "input a: " A case $A in 2) echo "2" // 如果A的取值为2,则就显示2 ;; // 每个判断语句结束都要有双分号隔开 3) echo "3" // 如果A的取值为3,则就显示3 ;; *) echo "other" // 如果A的取值即不为2也不为3,则就显示other exit // 退出判断 ;; esac
循环式
㈠循环式 while..do..done 、 until..do..done 、 for..do..done
while循环就是当条件成立时,就不断的循环,直到条件不满足才停止循环,格式如下:
while [ 条件判断] ; do 当条件满足的时候需要循环的程序 done
例子:用户输入任意字符时,我们都显示,你输入的是: 只有当用户输入Q或q时,我们才退出:
#!/bin/bash # while [ "$A" != 'Q' -a "$A" != 'q' ]; do echo "Input:$A" echo // 此行显示为空格 read -p "Please input something: " A done
例子:求100内所有整数之和:
#!/bin/bash # declare -i SUM=0 declare -i A=1 while [ $A -le 100 ]; do SUM=$[$SUM+$A] let A++ // 让A不断的循环自加,直到A的值小与等于100的时候停止 done echo "SUM is $SUM"
㈡而与while相反就是until,它的意思就是,当条件不成立时,就进行循环
until [条件判断] do
当条件不成立时,就不断的循环的程序
done
for..in..do..done的用法
例子显示每一位用户的默认shell:
#!/bin/bash # for I in `cut -d: -f1 /etc/passwd`; do echo "$I:`grep "^$I\>:" /etc/passwd | cut -d: -f7`" done
函数的应用
写一个脚本:
1、提示用户输入一个用户名;
2、使用函数实现:
判断一个用户是否存在,用户名通过参数传递而来;
如果存在,就显示此用户的shell和UID
如果不存在,就说此用户不存在;
#!/bin/bash # name() { if id $1 &> /dev/null; then echo `id -u $1`, shell: `grep "^$1\>:" /etc/passwd | cut -d: -f7` return 0 else echo "NO such this user." return 1 fi } read -p "Input a user" USER until [ "$USER" = "q" -o "$USER" = "Q" ]; do name $USER read -p "New User: " USER done
⑴条件测试:用[]将测试的条件括住,如:[2 + 3]
整数的比较为双目操作,也就是多个整数比较:NUM1操作符NUM2
-eq 等于 #test 2 -eq 3
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
⑵算术运算符
+ 加 - 减 * 乘 / % 余数 ^ 指数
例子:2+3等于5的多种表示方法
1、#sum=$[2+3]
#echo $sum
2、#sum=$((2+3))
#echo $sum
3、#let sum=2+3
#echo $sum
4、#expr 2 + 3 ----> 中间必须得有空格
例子:5除以3的余数是否为0
#[ $[5%3] -eq 0 ] ----> 括符两边有空格