一、while
循环输出10次
#!/bin/bash
i=0
while((i<10))
do
((i++))
echo $i
done
for循环1
#!/bin/bash
#此处i=1是为了证明for的括号会自动识别变量,所以会从1输出到9
i=1
for((i;i<10;i++))
do
echo $i
done
for循环2
#!/bin/bash
#循环1-20
for i in {1..20}
do
echo $i
done
for循环3
#!/bin/bash
#循环字符串
today=`date +"%Y%m%d"`
for i in {asd,qwe,zxc,1,2,3,$today}
do
echo $i
done
输出结果:
asd
qwe
zxc
1
2
3
20210518
for循环5
arr=(1 2 3 asd qwe zxc)
for i in ${arr[@]}
do
echo $i
done
for循环6命令行传入多个参数给数组
当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。
但是当它们被双引号" "包含时,就会有区别了:
"∗ " 会 将 所 有 的 参 数 从 整 体 上 看 做 一 份 数 据 , 而 不 是 把 每 个 参 数 都 看 做 一 份 数 据 。 " *"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。 "∗"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。"@"仍然将每个参数都看作一份数据,彼此之间是独立的。
#!/bin/bash
#如果是不加双引号或者是$*的话传入参数只作为一整串字符串
for i in "$@"
do
echo $i
done
#或者↓
#arr=$@
#for i in ${arr[@]}
#do
# $i
#done
#运行时候执行./test.sh 1 2 3
#输出
1
2
3
for循环7
#!/bin/bash
cd /home
for i in `find / -type f -name "*.log"`
do
echo $i
done
案例1:

案例2:
用两种循环将文件读入
#!/bin/bash
#while版
while read File
do
echo $File
done < /home/host_change.txt
#for版
for i in `cat /home/host_change.txt`
do
echo $i
done
案例3
#!/bin/bash
arr=(
time=`date`
if=`ifconfig`
mem=`free`
)
cat >/home/test/info.txt<<EOF
${arr[0]}
${arr[1]}
${arr[2]}
EOF
版权声明:本文为sh13661847134原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。