大数据全系列 教程
1869个小节阅读:467.1k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
##10.2 for
基本格式
for...do...done循环
语法
xxxxxxxxxx
for 变量名 in 变量取值列表
do
命令
done
提示:在此结构中“in变量取值列表”可省略,省略时相当于使用for i in “$@”.
xxxxxxxxxx
for 男人 in 世界的男人
do
if [ 有房 ]&&[ 有车 ] &&[ 存款 ] &&[ 会做家务 ] &&[ 帅气 ];then
echo “女生喜欢”
else
rm –f 男人
fi
done
直接列出元素的方法,比如:1 2 3 4 #=>需要空格隔开
xxxxxxxxxx
[root@node1 ch4]# vim for1.sh
#!/bin/bash
for num in 1 2 3 4
do
echo $num
done
[root@node1 ch4]# chmod +x for1.sh
[root@node1 ch4]# ./for1.sh
1
2
3
4
目前是1到4,还可以这样写,如果到10万、1000W,还可以这样写吗?
使用大括号的方法
xxxxxxxxxx
[root@node1 ch4]# echo {1..8}
1 2 3 4 5 6 7 8
[root@node1 ch4]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@node1 ch4]# echo 10.13.20.{1..4}
10.13.20.1 10.13.20.2 10.13.20.3 10.13.20.4
使用{}升级脚本:
xxxxxxxxxx
[root@node1 ch4]# cp for1.sh for2.sh
[root@node1 ch4]# vim for2.sh
#!/bin/bash
for num in {1..4}
do
echo $num
done
[root@node1 ch4]# ./for2.sh
1
2
3
4
{1..4}产生的结果是连续的数字,如果需求是1到100的偶数或奇数或3的倍数等需求时,是无法满足。
使用seq –s 分隔符 起始 步长 终点 seq -s " " 1 1 4
xxxxxxxxxx
[root@node1 ch4]# seq -s " " 1 1 4
1 2 3 4
# [1,50]之间的奇数
[root@node1 ch4]# seq -s " " 1 2 50
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
# [1,50]之间的偶数
[root@node1 ch4]# seq -s " " 2 2 50
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50
# [1,50]之间的3的倍数
[root@node1 ch4]# seq -s " " 3 3 50
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48
# [1,50]之间的5的倍数
[root@node1 ch4]# seq -s " " 5 5 50
5 10 15 20 25 30 35 40 45 50
[root@node1 ch4]# cp for1.sh for3.sh
[root@node1 ch4]# vim for3.sh
#!/bin/bash
for num in `seq -s " " 1 1 4`
do
echo $num
done
[root@node1 ch4]# ./for3.sh
1
2
3
4
# 另外一种实现方式 $()
[root@node1 ch4]# cp for3.sh for4.sh
[root@node1 ch4]# vim for4.sh
#!/bin/bash
for num in $(seq -s " " 1 1 4)
do
echo $num
done
[root@node1 ch4]# ./for4.sh
1
2
3
4