for循环的用法主要有两种:(1)用in去遍历list中的每一个元素;(2)使用类似于C语言的语法
用in去遍历list中元素
in后面接静态list
#!/bin/bash
i=1
for day in Mon Tue Wed; do
echo "day $i is : $day"
i=$(expr $i + 1)
done
输出结果:
day 1 is : Mon
day 2 is : Tue
day 3 is : Wed
如果用双引号把Mon Tue Wed
引起来,则list的长度会被看成是1
#!/bin/bash
i=1
for day in "Mon Tue Wed"; do
echo "day $i is : $day"
i=$(expr $i + 1)
done
输出结果:
day 1 is : Mon Tue Wed
in后面接变量
#!/bin/bash
i=1
str="Mon Tue Wed"
for day in $str; do
echo "day $i is : $day"
i=$(expr $i + 1)
done
输出结果:
day 1 is : Mon
day 2 is : Tue
day 3 is : Wed
如果,把$str
用双引号引起来,list的也被看作是只有一个元素
#!/bin/bash
i=1
str="Mon Tue Wed"
for day in "$str"; do
echo "day $i is : $day"
i=$(expr $i + 1)
done
输出结果:
day 1 is : Mon Tue Wed
unix命令的输出作为list
#!/bin/bash
for word in $(echo "hello world"); do
echo $word
done
输出结果:
in遍历数组
#!/bin/bash
array=("Mon" "Tue" "Wed")
for element in ${array[@]}; do
echo $element
done
输出
in后面接数字区间
#!/bin/bash
for i in {1..4}; do
echo $i
done
输出结果:
数字区间跨度为2
#!/bin/bash
for i in {1..10..2}; do
echo $i
done
输出结果:
遍历文件或目录
假设/home/docker/目录下有a.txt文件和rpm文件夹
#!/bin/bash
cd /home/docker
for dir_or_file in *; do
echo $dir_or_file
done
输出结果:
break语法
#!/bin/bash
for day in Mon Tue Wed; do
if [[ $day = Tue ]]; then
break
fi
echo $day
done
输出结果:
continue语法
#!/bin/bash
for day in Mon Tue Wed; do
if [[ $day = Tue ]]; then
continue
fi
echo $day
done
输出结果:
类似C语言的用法
类C语言语法
#!/bin/bash
for (( i=1; i<=3; i++ )); do
echo $i
done
输出结果: