for循环
1. 通过列表循环
a)直接列出列表
for i in 1 2 4 d k \; f o f
do
echo $i
done
b)连续序列的列表
for i in {1..3} {6..9} {a..z}
do
echo $i
done
或者可以指定间隔:{1..10..2},将会间隔为2从1到10进行输出,期望结果得到的全是奇数。
2. 通过其他命令的输出
通过使用反逗点 `` 将命令括起来,其中命令的输出将会以空白字符拆分成列表,供for循环进行使用。
#cat 输出文件中的内容
for i in `cat 123.txt`
do
echo $i
done
也可以通过$()将命令括起来
for i in $(seq 0 2 10)
do
echo $i
done
常见的用于循环中的命令有:
ls:列出文件
find:查找文件
seq:输出数值序列
如下也可以达到使用ls作为命令的效果,相当于ls *,也可以使用 /bins/*,相当于ls /bins/*
for i in *
do
echo $i
done
3. 使用C形式的for循环
使用C形式的for循环,需要使用双小括号
for ((i=1;i<1024;i*=2))
do
echo $i
done
while循环
1. 基本形式是
while condition_statament
do
statament
done
类似于if语句,其中condition_statament执行后的状态是循环结束判断的依据。
2. 命令语句(一般为test,其他的也可以,根据语句执行完的状态判断是否继续循环)
i=1
while test $i -lt 10
do
echo $i
i=$((i+1))
done
test语句等同于[]
i=1
while [ $i -lt 10 ]
do
echo $i
i=$((i+1))
done
3. 内置的双中括号命令
同样相当于一个语句,比test中的逻辑运算更方便一些。参考
4. 双小括号
declare -i i=1
while ((i<10))
do
echo $i
let ++i
done
5. 读取文件
# 读取test.sh文件
while read line
do
echo ${line}
done < test.sh
untile循环:同while形式,不同点在于条件是执行成功时停止循环。