Shell脚本循环语句及Case选择语句
工作中常遇到某项任务需要多次重复执行的情况,每次任务仅仅处理对象不一样,其他命令相同。例如:根据通讯录中的信息创建用户,检查各个主机的状态,根据ip地址名单设置访问策略等。
一、使用for循环语句
For循环的运作方式,需要制定一个变 量吸取值列表(for的执行条件),将取值列表的元素一一取出,依序放入指定的变量中,然后重复执行命令区域的命令序列(在do和done之间) ,直到所有元素取尽为止。
1. 格式:
for 变量名in取值列表
do
命令序列(循环体)
done
done为for循环语句的结束语、多个取值直接用空格分割
实验1:创建20个用户,密码为123456
#!/bin/bash
for i in {1..20}
do
useradd user$i && echo "123456" | passwd --stdin user$i
done
实验2:输出1-100之间的偶数
#!/bin/bash
for i in {1..50}
do
b=2
echo $(expr $i \* $b)
sleep 1
done
实验3:批量创建带名字的用户(名字列表在userlist.txt中)
#!/bin/bash
#批量创建用户
for uname in $(cat userlist.txt)
do
useradd $uname
echo "123456" |passwd --stdin $uname &> /dev/null
chage -d 0 $uname #要求你第一次登录时改密码
done
2. For的另一种语法格式
这种语法跟传统语言中的for很像,如C语言。
for ((初始条件:终止条件:异动项))
do
命令区域
done
在for循环中,一开始设定初始条件,接着判断终止条件是否成立,如果尚未达到终止条件,就执行do~done之间的命令区域,接着执行改动项,复上述终止条件,直到条件成立
实验4:9x9乘法表
#!/bin/bash
for ((i=1;i<=9;i++))
do
for ((j=1;j<=i;j++))
do
echo -n "$i * $j = $(expr $i \* $j) “
done
echo
done
二、使用while循环语句
1. 格式:
while [条件表达式]
do
<