shell编程 - 循环语句
1. for in 语句
- 基本格式
for var in list
do
commands
done
- 代码示例
list="test1 test2 test3"
for value in $list
do
echo $value
done
- 设置列表的分隔符
# 保存原始的分隔符设置
ifs=$IFS
# 设置风格符为换行符,逗号,以及冒号
IFS=$'\n',:
list="test1,test2,test3"
for value in $list
do
echo $value
done
# 恢复默认设置
IFS=$ifs
IFS默认将空格,制表符,换行符作为分隔符
- 从命令读取值
cat ./test.txt
this is test1
this is test2
this is test3
file="./test.txt"
ifs=$IFS
IFS=$'\n'
for value in $(cat $file)
do
echo $value
done
IFS=$ifs
- 使用通配符读取目录
for file in ./*
do
if [ -f "$file" ]
then
echo "$file"
fi
done
2. for 语句
- 基本格式
for (( variable assignment; condition; iteration process ))
- 代码示例
for (( i=1; i <= 5; i++ ))
do
echo "$i"
done
3. while 语句
- 基本格式
while test command
do
other commands
done
- 代码示例
var1=5
while [ $var1 -gt 0 ]
do
echo $var1
var1=$[ $var1 - 1 ]
done
4. until 语句
- 基本格式
until test commands
do
other commands
done
until 的条件测试返回非0的时候才会执行循环体中命令,与while刚好相反
- 代码示例
var1=5
until [ $var1 -eq 0 ]
do
echo $var1
var1=$[ $var1 - 1]
done
5. break 语句
list="test1 test2 test3"
for value in $list
do
if [ "$value" = 'test2' ]
then
break
fi
echo $value
done
默认跳出当前循环, breadk 2 则跳出双层循环的外层循环
6. continue 语句
list="test1 test2 test3"
for value in $list
do
if [ "$value" = 'test2' ]
then
continue
fi
echo $value
done
默认终止某次循环中的其他命令,continue 2则终止外层循环中的其他命令,但不终止循环