流程控制语句

时间:2023-01-25 19:58:57

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形式,不同点在于条件是执行成功时停止循环