for循环
for循环语法
# 语法(shell特征:根据值进行循环)
for i in 值1 值2 值3
do
echo $i
done
示例一:固定值循环
[root@egon day05]# cat 7.sh
#!/bin/bash
for i in "aaa" 222 "ccc"
do
echo $i
done
示例二:执行结果循环
# 将目录中的文件作为执行条件,循环进行改名
[root@egon day05]# cat 8.sh
#!/bin/bash
for i in `ls /scripts/day05`
do
mv $i ${i/txt/sh}
done
示例三:数值循环
# 这里将1-5的值都进行了循环,然后依次显示
#!/bin/bash
for i in {5..1}
do
echo $i
done
for i in {a..z}
do
echo $i
done
示例四:ip检测
# 将范围内所有的值进行循环,值有多少就循环多少次
#!/bin/bash
for i in {1..254}
do
ping -c1 10.0.0.$i &>/dev/null
[ $? -eq 0 ] && echo 10.0.0.$i
done
示例五:结合break和continue
# 使用结果和while一致,当使用continue时,将当前循环结束,不执行循环下方指令,但使用break将直接结束本层循环,也就直接退出,只会有AB两个结果
[root@egon day05]# cat 9.sh
#!/bin/bash
for i in {A..Z}
do
if [ $i == "C" ];then
# break
continue
fi
echo $i
done
案例六:统计文件夹下所有文件类型
# 对传入参数中的文件或目录进行判断,统计文件或其他文件类型数量
#!/bin/bash
[ $# -ne 1 ] && echo "必须传入一个参数" && exit
regular=0
dir=0
link=0
other=0
for fname in `ls $1`
do
if [ -L "$1/$fname" ];then
let link++
elif [ -f "$1/$fname" ];then
let regular++
elif [ -d "$1/$fname" ];then
let dir++
else
let other++
fi
done
echo "标准文件个数:$regular"
echo "目录文件个数:$dir"
echo "软连接文件个数:$link"
echo "其他文件个数:$other"