流程控制之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循环语句

1-23-shell脚本之-if流程控制语句和for循环语句的使用

流程控制之for循环

流程控制之if判断+while循环+for循环

Java流程控制之循环结构

流程控制之for循环