標籤:shell bash for
迴圈執行: 將一段代碼重複執行0、1或多次;
進入條件:條件滿足時才進入迴圈;
允出準則:每個迴圈都應該有允出準則,以有機會退出迴圈;
bash指令碼:
for迴圈
while迴圈
until迴圈
for迴圈:
兩種格式:
(1) 遍曆列表
(2) 控制變數
(1)遍曆列表:
for VARAIBLE in LIST; do
迴圈體
done
進入條件:只要列表有元素,即可進入迴圈;
允出準則:列表中的元素遍曆完成;
LISTT的產生方式:
(1) 直接給出;
(2) 整數列表
(a) {start..end}
(b) seq [start [incremtal]] last
(3) 返回列表的命令
(4) glob
(5) 變數引用
[email protected], $*
樣本:添加三個使用者
#!/bin/bash#for username in user21 user22 user23; do if id $username &> /dev/null; then echo "$username exists." else useradd $username && echo "Add user $username finished." fidone
樣本:求100以內所有正整數之和;
#!/bin/bash#declare -i sum=0for i in {1..100}; do echo "\$sum is $sum, \$i is $i" sum=$[$sum+$i]doneecho $sum
樣本:判斷/var/log目錄下的每一個檔案的內容類型
#!/bin/bash#for filename in /var/log/*; do if [ -f $filename ]; then echo "Common file." elif [ -d $filename ]; then echo "Directory." elif [ -L $filename ]; then echo "Symbolic link." elif [ -b $filename ]; then echo "block special file." elif [ -c $filename ]; then echo "character special file." elif [ -S $filename ]; then echo "Socket file." else echo "Unkown." fidone
for迴圈格式:
for VARAIBLE in LIST; do
迴圈體
done
for迴圈實現9*9乘法表
#!/bin/bash#for j in {1..9}; do for i in $(seq 1 $j); do echo -n -e "${i}X${j}=$[${i}*${j}]\t" done echo done
while迴圈:
while CONDITION; do
迴圈體
迴圈控制變數修正運算式
done
進入條件:CONDITION測試為”真“
允出準則:CONDITION測試為”假“
樣本:求100以內所有正整數之和;
#!/bin/bash#declare -i sum=0declare -i i=1while [ $i -le 100 ]; do let sum+=$i let i++doneecho $sum
until迴圈:
until CONDITION; do
迴圈體
迴圈控制變數修正運算式
done
進入條件:CONDITION測試為”假“
允出準則:CONDITION測試為”真“
樣本:求100以內所有正整數之和;
#!/bin/bash#declare -i sum=0declare -i i=1until [ $i -gt 100 ]; do let sum+=$i let i++doneecho $sum
while迴圈的特殊用法(遍曆檔案的行):
while read VARIABLE; do
迴圈體;
done < /PATH/FROM/SOMEFILE
依次讀取/PATH/FROM/SOMEFILE檔案中的每一行,且將基賦值給VARIABLE變數;
樣本:找出ID號為偶數的使用者,顯示其使用者名稱、ID及預設shell;
#!/bin/bash#while read line; do userid=$(echo $line | cut -d: -f3) username=$(echo $line | cut -d: -f1) usershell=$(echo $line | cut -d: -f7) if [ $[$userid%2] -eq 0 ]; then echo "$username, $userid, $usershell." fidone < /etc/passwd
for迴圈的特殊用法:
for ((控制變數初始化;條件判斷運算式;控制變數的修正語句)); do
迴圈體
done
控制變數初始化:僅在迴圈代碼開始運行時執行一次;
控制變數的修正語句:每輪迴圈結束會先進行控制變數修正運算,而後再做條件判斷;
樣本:求100以內所有正整數之和
#!/bin/bash#declare -i sum=0for ((i=1;i<=100;i++)); do let sum+=$idoneecho "Sum: $sum."
樣本:列印九九乘法表
#!/bin/bash#for ((j=1;j<=9;j++)); do for ((i=1;i<=j;i++)); do echo -e -n "${i}X${j}=$[${i}*${j}]\t" done echodone
本文出自 “汪立明” 部落格,請務必保留此出處http://afterdawn.blog.51cto.com/7503144/1916005
shell指令碼編程迴圈之for/while/untill迴圈