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]则报错