shell 流程控制

【shell 流程控制】观书散遗帙,探古穷至妙。这篇文章主要讲述shell 流程控制相关的知识,希望能为你提供帮助。
1.
要想使用while循环逐行读取a.txt文件,有三种方式

#!/bin/bash
cat /root/a.txt|while read LINE; do
echo $LINE
done



#!/bin/bash
while read LINE; do
echo $LINE
done < /root/a.txt



#!/bin/bash
exec < /root/a.txt#读取文件作为标准输入
while read LINE; do
echo $LINE
done

2.
case的模式也支持正则,匹配哪个模式就执行哪个
#!/bin/bash
case $1 in
[0-9])
echo "match number"
; ;
[a-z])
echo "match letter"
; ;
-h|--help)
echo "help"
; ;
*)
echo "Input error!"
exit
esac

3.
select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择:
select var in ... ; do
 break;
done

[root@study ~]# vim select.sh
#!/bin/bash
select mysql_version in 5.1 5.6; do
echo $mysql_version
done
[root@study ~]# sh select.sh
1) 5.1
2) 5.6
#? 1
5.1
#? 2
5.6
#? 1
5.1
#?

用户输入编号会直接赋值给变量mysql_version。作为菜单用的话,循环第二次后就不再显示菜单了,并不能满足需求。

在外面加个死循环,每次执行一次select就break一次,这样就能每次显示菜单了
#!/bin/bash
while true ; do
select mysql_version in 5.1 5.6; do
echo $mysql_version
break
done
done
[root@study ~]# sh select.sh
1) 5.1
2) 5.6
#? 1
5.1
1) 5.1
2) 5.6
#? 3

1) 5.1
2) 5.6
#? 2
5.6
1) 5.1
2) 5.6
#?


    推荐阅读