Shell流程控制

2022/4/26 7:12:45

本文主要是介绍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]则报错



这篇关于Shell流程控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程