for循环语句
用法:
- 读取不同的变量值,用来逐个执行同一组命令。
- 使用场景:一般用于循环次数事先已知的场景。
- 执行机制:遍历。
格式:
for 变量名 in 取值列表
do
命令序列
done
执行机制:
1.依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束。
2.如果省略 [in WORDS ... ] ,此时使用位置参数变量 in "$@"

演示
1、打印1到10
[root@localhost ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@localhost ~]# seq 1 10
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# for i in {1..10};do echo $i; done
1
2
3
4
5
6
7
8
9
10
2、打印1到10之间的奇数
[root@localhost ~]# echo {1..10..2}
1 3 5 7 9
[root@localhost ~]# seq 1 2 10
1
3
5
7
9
[root@localhost ~]# for i in {1..10..2};do echo $i; done
1
3
5
7
9
3、打印1到10之间的偶数
[root@localhost ~]# echo {2..10..2}
2 4 6 8 10
[root@localhost ~]# seq 2 2 10
2
4
6
8
10
[root@localhost ~]# for i in {2..10..2};do echo $i; done
2
4
6
8
10
实例
1、求从1加到100的和。
[root@localhost ~]# vim sum100.sh
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[sum+i]
done
echo "和为 $sum"
[root@localhost ~]# bash sum100.sh
和为 5050
2、生成6位随机密码
[root@localhost ~]# vim 223.sh
#!/bin/bash
STR="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890"
sum=' '
for ((i=1;i<=6;i++))
do
length=${#STR}
num=$[RANDOM % length] //每次循环随机获取0到字符串长度减1的下标值
value=${STR:num:1} //进行字符串截取,每次随机取出1个字符
sum+=$value //每次追加生成的密码,sum+=$value等同于sum=$sum$value
done
echo $sum
[root@localhost ~]# bash 223.sh
zpGgX2
[root@localhost ~]# bash 223.sh
iiPFux
多线程执行脚本(并行执行)
普通for循环是串行,一个一个执行。
在do和done中间增加 { } 符号,可以多线程同时执行。
[root@localhost ~]# vim 118.sh
#!/bin/bash
#多线程,同时ping多台主机
for i in {10..20}
do
{
ping -c 2 -w 2 -i 0.5 192.168.1.$i &>/dev/null
if [ $? -eq 0 ]
then
echo "192.168.1.$i " >> ~/host_ip
else
echo "192.168.1.$i is dead" $>/dev/null
fi
}&
#{ }表示多线程同时执行 #增加 & 符号,表示将进程放到后台运行,后台命令之间是不区分 先来后到关系的
done
wait
#wait的作用是等待上面所有后台进程都执行完毕后,才会去执行后 面的语句。如果没有wait,后面的语句是不会等待后台进程的,会>造成一些需要有上下文关系的程序执行错误。
cat /root/host_ip
[root@localhost ~]# bash 118.sh
192.168.1.10
while循环语句
用法:
- 重复测试某个条件,只要条件成立则反复执行。
- 使用场景:相对于for需要知道循环次数,当我们只知道停止条件,不知道次数时,就需要使用while。
格式:
while 条件测试操作
do
命令序列
done

1、循环输出1-10的数字
#!/bin/bash
num=1
while [ $num -le 10 ]
do
echo $num
num=$(( $num + 1 ))
done
博客主要介绍了Bash中for和while循环语句。for循环用于循环次数已知场景,通过遍历执行同一组命令,给出打印数字、求累加和、生成随机密码等示例,还介绍了多线程执行脚本方法;while循环用于只知停止条件不知次数的场景,并给出循环输出数字示例。
1938

被折叠的 条评论
为什么被折叠?



