【RHCA+】for循环

" 目录: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 \~#

相关推荐
Apipi*27 分钟前
30天速通Linux 第七章进程间通信
linux·运维·服务器
emo_2b36 分钟前
Pycharm配置conda解释器时遇到的问题及解决方法
linux·pycharm·conda
人生百态,人生如梦1 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
byte轻骑兵1 小时前
【BlueZ】hciconfig 工具:蓝牙适配器管理实操 + 源码实现基础
linux·bluez·电脑蓝牙·嵌入式蓝牙
SKH.2 小时前
Linux驱动-系统移植
linux·服务器
根目录下的猫2 小时前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端
yunwei372 小时前
eBPF 入门实践教程十七:编写 eBPF 程序统计随机/顺序磁盘 I/O
linux·后端·性能优化
帷幕落秋2 小时前
内存、虚拟内存与 OOM
linux·运维
dingdingfish2 小时前
TLPI 第41章 读书笔记:Fundamentals of Shared Libraries
linux·static·link·dynamic·library·tlpi
Apipi*3 小时前
30天速通Linux 第五章Linux 进程管理
linux·运维·服务器