流程控制之for循环 流程控制之select语句
Posted 我的紫霞辣辣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流程控制之for循环 流程控制之select语句相关的知识,希望对你有一定的参考价值。
流程控制之for循环
语法
#===========》Shell风格语法
for 变量名 [ in 取值列表 ]
do
循环体
done
#===========》C语言风格语法
for ((初值;条件;步长))
do
循环体
done
continue:默认退出本次循环
break:默认退出本层循环
for循环案例
判断/dev目录下所有文件的类型
#!/bin/bash
for i in `ls /dev`
do
if [[ -d /dev/$i ]];then
echo "$i是字典类型"
elif [[ -b /dev/$i ]];then
echo "$i块设备类型"
elif [[ -f /dev/$i ]];then
echo "$i是文件类型"
elif [[ -c /dev/$i ]];then
echo "$i是字符设备"
else
echo "其他"
fi
done
输入账号信息,输入个数,批量创建用户user01、user02、user03…,密码默认1234
[root@m01 ~]# seq -w 3
1
2
3
#!/bin/bash
read -p "请输入创建用户的信息:" name
read -p "请输入创建创建的用户的数量:" count
for i in `seq -w $count`
do
useradd $name$i &> /dev/null
echo 123 | passwd --stdin $name$i &> /dev/null
id $name$i &> /dev/null
if [ $? -eq 0 ];then
echo "$name$i 创建成功"
else
echo "$name$i 创建失败"
fi
done
流程控制之select语句
语法
select表达式是bash的一种扩展应用,擅长于交互式场合。用户可以从一组不同的值中进行选择
PS3='choose one: ' # select默认使用PS3变量的值做提示符
select var in ...
do
...
break # 跳出select,否则是死循环
done
select语句案例
了解语法使用
#!/bin/bash
select a in {A,B,C,D}
do
echo A
echo B
echo C
echo D
break
done
==================调用==================================================================================================
[root@m01 ~]# bash a.sh
1) A
2) B
3) C
4) D
#? 3 不加PS3,select默认的提示符为#?
A
B
C
D
若省略 in list 则select会把 $@ 当做列表项
#!/bin/bash
PS3="输入你的选择:"
select a
do
echo
echo "你选择的是$a"
echo
break
done
==================调用==================================================================================================
[root@m01 ~]# bash A.sh 香蕉 苹果 橘子 # 省略 in list 则select会把 $@ 当做列表项
1) 香蕉
2) 苹果
3) 橘子
输入你的选择:2
你选择的是苹果
通常情况下,我们会把select语句和case语句一起使用
#!/bin/bash
PS3="输入选项:"
select a in {A..D}
do
case $a in
A)
echo "你的选择是A"
;;
B)
echo "你的选择是B"
;;
C)
echo "你的选择是C"
;;
D)
echo "你的选择是D"
;;
*)
echo "你的选择是其他"
esac
break
done
==================调用==================================================================================================
[root@m01 ~]# bash b.sh
1) A
2) B
3) C
4) D
输入选项:1 # 注意输入的是选项!!!
你的选择是A
利用select语句+case语句编写一个简易版的跳板机
# 使用该脚本,需要提前配置好公钥与私钥
#!/bin/bash
PS3="输入你想要连接的主机:"
select a in Web01 Web02 Web03
do
case $a in
Web01)
ssh 192.168.15.7
;;
Web02)
ssh 192.168.15.8
;;
Web03)
ssh 192.168.15.9
;;
esac
break
done
以上是关于流程控制之for循环 流程控制之select语句的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript的流程控制之for循环语句和while循环语句