步進循環語句for
1.帶列表的循環語句
基本語法:
for variable in {list}
do
statement1
statement2
..
done
例1:使用帶列表的語句
#! /bin/bash
for var in 1 2 3 4 5 6 7 8
do
echo "the number is $var"
done
執行結果:
可以將上述代碼進行改造,得到同樣的效果:
#! /bin/bash
for var in {1..8}
do
echo "the number is $var"
done
例2:指定語句的步長
基本語法:
for variable in {start..end..step}
do
statement1
statement2
..
done
使用該語法:
#! /bin/bash
sum=0;
for i in {1..100..2}
do
let "sum+=i"
done
echo "the sum is $sum"
執行結果:
例3:使用命令的輸出結果作爲循環的執行條件
#! /bin/bash
#${ls}可換成*,代表ls *
for file in $(ls)
do
echo "$file"
done
執行結果:
例4:使用循環逐個處理腳本的參數
#! /bin/bash
echo "$*"
for arg in $*
do
echo "${arg}"
done
執行結果:
2.不帶列表的for循環語句
基本語法:
for variable
do
statement1
statement2
..
done
例5:使用不帶列表的循環語句
#! /bin/bash
for arg
do
echo "$arg"
done
執行結果:
3.類C風格的for循環語句
基本語法:
for ((expression1;expression2;expression3))
do
statement1
statement2
..
done
例6:使用上述語法
#! /bin/bash
for (( i=1; i<5; i++))
do
echo "$i"
done
執行結果:
省略條件的死循環:
for ((;;))
4.使用for循環語句處理數組
基本語法:
for variable in ${array[*]}
do
statement1
statement2
..
done
例7:處理數組
#! /bin/bash
array=(Monday Tuesday Wednesday Thursday Friday Saturday Sunday)
for day in ${array[*]}
do
echo $day
done
執行結果:
until循環語句
1.until語句的基本語法
until expression
do
statement1
statement2
..
done
當表達式的值不爲0時,將執行和之間的語句;當表達式的值爲0時,將退出循環結構,繼續執行語句後面的其它語句
例8:使用語句
#! /bin/bash
i=1
#當i的值小於9時執行循環
#注意此處兩個中括號不能分隔
until [[ "$i" -gt 9 ]]
do
let "square=i*i"
echo "$i*$i=$square"
let "i=i+1"
done
執行結果:
2.利用until語句批量增加用戶
例9:批量增加用戶
#! /bin/bash
i=1
until [ "$i" -eq 21 ]
do
#執行useradd命令添加用戶
useradd user$i
#修改用戶密碼
echo "password" | passwd --stdin user$i > /dev/null
#ubuntu下更改成echo "user$i":"password" | chpasswd
let "i++"
done
執行結果:
例10:批量刪除用戶:
#! /bin/bash
i=1
until [ "$i" -eq 21 ]
do
userdel -r user$i
let "i++"
done
while循環語句
1.while語句的基本語法
基本語法:
while expression
do
statement1
statement2
..
done
當表達式的值爲0時,執行循環內的語句;否則退出循環
例11:使用循環來輸出數字1~9的平方
#! /bin/bash
i=1
while [ "$i" -lt 10 ]
do
let "square=i*i"
echo "$i*$i=$square"
let "i=i+1"
done
執行結果:
通過break語句跳出指定的層數
例12:給一個參數使其跳出指定的層數
#! /bin/bash
for (( i=1; i<=9; i++ ))
do
for (( j=1; j<=i; j++ ))
do
let "product=i*j"
printf "$i*$j=$product"
if [[ "product" -gt 9 ]]
then
printf " ”
else
printf " "
fi
if [[ "$j" -eq 5 ]]
then
break 2
fi
done
echo
done
執行結果:
乘法表的最後一行與命令提示符位於同一行,這是因爲滿足後執行語句,跳過兩行【跳過】,因此同行
含參數的continue語句
例13:使用含參數的語句
#! /bin/bash
for i in a b c d
do
echo -n "$i "
for j in `seq 10`
do
if [ $j -eq 5 ]
then
continue 2
fi
echo -n "$j"
done
echo
done
執行結果:
當內層循環到第5次時,變量的值爲5,執行 2語句,跳過外層的