流程控制语句

  • if else语句

  • case 语句

  • while语句

  • until语句

if else 语句
if 条件
then 
	命令
fi
if 条件
then
	命令
else 
	命令
fi

可以将if语句放入一行中书写

if 条件;then 命令;fi
if 条件
then
	命令
elif 条件2 
then 
	命令2
elif 条件3 
then 
	命令3
else
	命令N
fi

if 条件的退出状态

大多数情况0代表成功;非0代表失败

shell内置命令test

  • 对整数进行比较测试
  • 对字符串
  • 对文件测试

检测某个命令是否成立,功能与单个[]作用相同,

整数 比较

if test 数字1 option 数字2
then 
...
fi

&&只能用在双括号中;

case语句

适用于分支较多的语句

case 值 in 
匹配模式1)
	命令1 
	命令2
	;;
匹配模式2)
	命令1
	命令2
	;;

支持简单的正则化表达式通配符;

格式 说明
* 表示任意字符串
[abc ] 表示范围中的任意一个
[m-n] 表示从m-n中任意的一个字符;
| 表示多重选择,类似或运算,
#!/bin/bash
read -p "请输入一个数字" data
case $data in
1)
	echo "星期一"
	;;
2)
	echo "星期二"
	;;
3)
	echo "星期三"
	;;
4)
	echo "星期4"
	;;
5)
	echo "星期五"
	;;
6)
	echo "星期六"
	;;
7|0)
	echo "星期天"
	;;
*)
	echo "星期一"
	;;
esac

循环流程控制语句while

语法

while 条件
do 
	命令一
	命令2
	...
	continue;
	
	break;
	
done

一行写法

while 条件;do 命令;done;

无限循环

while :
do 
	command
done

#或则
while true
do 
 	command
done

until 语句,直到什么为止,也是一个循环结构

也是循环结构,与while循环在处理方式上相反 ,循环条件为false时候会一直循环,条件为true时候会停止循环

until 条件
do 
	命令
done

如果返回值为1(代表false),继续执行循环体结构,否则跳出循环;

for 循环

#多行写法
for var in item1 item2 ...
do 
	命令1
	命令2
	...
done

#一行写法
for var in item1 item2 ... ;do 命令1 ;命令2;...;done;



for var  in {start .. end}
do 
	命令
done

for ((i=1;i<结束值;i++))
do 
	命令
done

#无限循环
for ((;;))

select语句

进行菜单选择输入,可以增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行对应的功能,shell语言独有的一种循环,适合终端交互

select var in menu1 menu2 ...
do 
命令
done

select 是无限循环的死循环,输入空值(无效值),都不会结束循环,只有遇到break ,或则按下ctrl+D才能结束循环;

#!/bin/bash
echo "您的爱好是什么"
select hobby in "编程" “youxi ” "篮球"
do 
 echo $hobby
 break
 
done
echo