一、for循環
for循環是Shell編程中最常用的循環控制語句之一,其基本語法如下:
for 變量名 in 循環列表
do
循環體
done
其中,變量名用於保存每次迭代的值,循環列表可以是一組字符串或者一個命令的輸出結果。例如:
for i in 1 2 3 4 5
do
echo $i
done
上面的代碼會輸出1到5,每個數字一行。如果使用命令的輸出結果進行循環,則需要使用反引號或者$(命令)的方式,例如:
for file in `ls /tmp`
do
echo $file
done
for file in $(ls /tmp)
do
echo $file
done
上面兩個代碼段都會輸出/tmp目錄下的文件名。
二、while循環
while循環是另一種常見的循環控制語句,其基本語法如下:
while 條件
do
循環體
done
while循環會根據條件不斷地執行循環體,直到條件不成立為止。例如:
i=1
while [ $i -le 5 ]
do
echo $i
i=$((i+1))
done
上面的代碼會輸出1到5,每個數字一行。
三、until循環
until循環是和while循環相似的一種循環控制語句,其語法如下:
until 條件
do
循環體
done
與while循環相反的是,until循環會在條件成立之前不斷地執行循環體,直到條件成立為止。例如:
i=1
until [ $i -gt 5 ]
do
echo $i
i=$((i+1))
done
上面的代碼會輸出1到5,每個數字一行。
四、break和continue語句
在循環中,有時候需要跳出循環或跳過某次循環,這時候可以使用break和continue語句。
break語句可以跳出當前的循環,例如:
for i in 1 2 3 4 5
do
if [ $i -eq 3 ]
then
break
fi
echo $i
done
上面的代碼會輸出1和2,當$i等於3時跳出循環。
continue語句可以跳過當前的循環,直接開始下一次循環,例如:
for i in 1 2 3 4 5
do
if [ $i -eq 3 ]
then
continue
fi
echo $i
done
上面的代碼會輸出1、2、4和5,當$i等於3時跳過本次循環。
五、案例:統計某個目錄下的文件數和目錄數
#!/bin/bash
dir=$1
if [ ! -d $dir ]
then
echo "$dir is not a directory"
exit 1
fi
file_count=0
dir_count=0
for file in $dir/*
do
if [ -f $file ]
then
file_count=$((file_count+1))
elif [ -d $file ]
then
dir_count=$((dir_count+1))
fi
done
echo "File count: $file_count"
echo "Directory count: $dir_count"
上面的代碼可以統計某個目錄下的文件數和目錄數,其中使用了for循環和if語句。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/246439.html