“ 目录:RHCA+ -> 5 Shell脚本 -> 12 for循环 ”

循环语句用来多次重复执行相同的命令
执行前需要给变量赋值,满足判断条件时才会执行
|
语法格式 |
作用 |
|
for 变量名 in 值1 值2 .. 值N do 命令序列 done |
匹配条件时循环执行动作; 直接给变量赋值时,赋值的次数就是循环的次数;多个值之间用空格分隔; |
|
for ((变量;条件;运算)) do 命令序列 done |
匹配条件时循环执行动作; 先初始化变量值,再执行运算操作,最后通过条件判断是否执行 |
1、判断该用户是否存在,不存在则创建
[root@wuzuniao ~]# vim 4.txt #创建用户列表,每个用户单独一行
a
b
c
[root@wuzuniao ~]# vim 4.sh
#!/bin/bash
read -p "Enter The Users Password : " PASSWD #用read获取输入的密码值,赋值给PASSWD变量;-p可显示提示信息
for UNAME in `4.txt`
do
id $UNAME &> /dev/null #查看用户信息,执行成功结果为0,失败为非0,方便下面用$?变量判断;/dev/null为黑洞文件,输出到里面信息都会消失,避免执行结果回显到标准输出
if [ $? -eq 0 ]
then
echo "$UNAME , Already exists"
else
useradd $UNAME
echo "$PASSWD" | passwd –stdin $UNAME &> /dev/null
echo "$UNAME , Create success"
fi
done
[root@wuzuniao ~]# bash 4.sh #执行脚本
Enter The Users Password : 1 #输入密码
a , Create success
b , Create success
c , Create success
[root@wuzuniao ~]# tail -3 /etc/passwd #查看最新的账号信息,可以看到自动建好了
a:x:1001:1001::/home/a:/bin/bash
b:x:1002:1002::/home/b:/bin/bash
c:x:1003:1003::/home/c:/bin/bash
[root@wuzuniao ~]#
2、批量测试主机是否在线
[root@wuzuniao ~]# vim 5.txt #创建主机列表文件,每个地址单独一行
192.168.1.1
192.168.1.2
192.168.1.3
[root@wuzuniao ~]# vim 5.sh
#!/bin/bash
HLIST=$(cat ~/5.txt) #从文件中读取IP地址并赋值给HLIST变量
for IP in $HLIST
do
ping -c 3 -i 0.2 -W 3 $IP &> /dev/null #通过ping命令的返回值来测试主机是否在线,成功为0,是否被非0
if [ $? -eq 0 ]
then
echo "Host $IP is On-line."
else
echo "Host $IP is Off-line."
fi
done
[root@wuzuniao ~]# bash 5.sh #执行脚本
Host 192.168.1.1 is On-line.
Host 192.168.1.2 is Off-line.
Host 192.168.1.3 is On-line.
[root@wuzuniao ~]#
3、给变量赋值并输出每次赋的值
[root@wuzuniao ~]# vim 6.sh #给变量赋值并输出每次赋的值
#!/bin/bash
for A in {2..6}
do
echo $A;
done
[root@wuzuniao ~]# bash 6.sh #执行脚本
2
3
4
5
6
[root@wuzuniao ~]#
4、输出99乘法表
[root@wuzuniao ~]# vim 9.sh #输出99乘法表
#!/bin/bash
for i in {1..9}
do
for ((j=1;j
do
printf "%-8s" $j*$i=$((j*i))
done
echo
done
[root@wuzuniao ~]# bash 9.sh #执行脚本
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
[root@wuzuniao ~]#
网硕互联帮助中心



评论前必须登录!
注册