Shell流程控制
Shell流程控制
if 判断
基本语法
# 语法一,分号表示一条命令的结束 if [ 条件判断式 ];then 程序;fi # 语法二 if [ 条件判断式 ] then 程序 fi 注意:if 后面必须要有空格
实战
[root@zookeeper1 shell]# age=7 # 如果7<=age<=17则输出ok [root@zookeeper1 shell]# if [ $age -ge 7 ] && [ $age -le 17 ];then echo ok;fi ok # 可以将条件写在一对[]里面,用-a(and)连接也是一样的作用,如果是||则用-o(or)连接 [root@zookeeper1 shell]# if [ $age -ge 7 -a $age -le 17 ];then echo ok;fi ok 多分支语法
if [ 条件判断式 ] then 程序 elif [ 条件判断式 ] then 程序 else 程序 fi 实战
[root@zookeeper1 shell]# cat if.sh #!/bin/bash if [ $1 -lt 18 ] then echo 未成年 elif [ $1 -lt 30 ] then echo 成年 else echo 老年人 fi [root@zookeeper1 shell]# ./if.sh 7 未成年 [root@zookeeper1 shell]# ./if.sh 18 成年 [root@zookeeper1 shell]# ./if.sh 50 老年人 case 语句
基本语法
case $变量名 in 值1) 如果变量的值等于值 1,则执行程序 1 ;; 值2) 如果变量的值等于值 2,则执行程序 2 ;; …省略其他分支… *) 如果变量的值都不是以上的值,则执行此程序 ;; esac 注意事项
- case 行尾必须为单词 in,
- 每一个模式匹配必须以右括号 ) 结束
- 双分号 ;; 表示命令序列结束,相当于 java 中的 break
- 最后的 *) 表示默认模式,相当于 java 中的 default
实战
[root@zookeeper1 shell]# cat case.sh #!/bin/bash case $1 in 1) echo one ;; 2) echo two ;; 3) echo three ;; *) echo number ;; esac [root@zookeeper1 shell]# ./case.sh 1 one [root@zookeeper1 shell]# ./case.sh 2 two [root@zookeeper1 shell]# ./case.sh 3 three [root@zookeeper1 shell]# ./case.sh 5 number for 循环
基本语法1
for (( 初始值;循环控制条件;变量变化 )) do 程序 done 实操
[root@zookeeper1 shell]# cat for.sh #!/bin/bash for (( i=1;i<=$1;i++ )) do sum=$[ $sum+$i ] done echo $sum [root@zookeeper1 shell]# ./for.sh 100 5050 基本语法2
for 变量 in 值1 值2 值3… do 程序 done 实操
[root@zookeeper1 shell]# for number in 1 2 3;do echo $number;done 1 2 3 基本语法3
for 变量 in {最小值..最大值} do 程序 done 实战
[root@zookeeper1 shell]# for i in {1..100};do sum=$[ $sum+$i ];done;echo $sum 5050 注意:in后面要有空格,{}里面不要有空格
while 循环
while [ 条件判断式 ] do 程序 done 实战
[root@zookeeper1 shell]# cat while.sh #!/bin/bash i=1 while [ $i -le $1 ] do sum=$[$sum+$i] i=$[$i+1] done echo sum=$sum [root@zookeeper1 shell]# ./while.sh 100 sum=5050 注意:[]之间要有空格,如果写成[$i -le $1]则报错