1. 程式人生 > 其它 >shell程式設計 - 迴圈語句

shell程式設計 - 迴圈語句

1. for in 語句

  • 基本格式
for var in list
do
  commands
done
  • 程式碼示例
list="test1 test2 test3"
for value in $list
do
  echo $value
done
  • 設定列表的分隔符
# 儲存原始的分隔符設定
ifs=$IFS  

# 設定風格符為換行符,逗號,以及冒號
IFS=$'\n',: 

list="test1,test2,test3"
for value in $list
do
  echo $value
done

# 恢復預設設定
IFS=$ifs 

IFS預設將空格,製表符,換行符作為分隔符

  • 從命令讀取值
cat ./test.txt
this is test1
this is test2
this is test3
file="./test.txt"
ifs=$IFS
IFS=$'\n'
for value in $(cat $file)
do
  echo $value
done
IFS=$ifs
  • 使用萬用字元讀取目錄
for file in ./*
do
  if [ -f "$file" ]
  then
    echo "$file"
  fi
done

2. for 語句

  • 基本格式
for (( variable assignment; condition; iteration process ))
  • 程式碼示例
for (( i=1; i <= 5; i++ ))
do
  echo "$i"
done

3. while 語句

  • 基本格式
while test command
do
  other commands
done
  • 程式碼示例
var1=5
while [ $var1 -gt 0 ]
do
  echo $var1
  var1=$[ $var1 - 1 ]
done

4. until 語句

  • 基本格式
until test commands
do
  other commands
done

until 的條件測試返回非0的時候才會執行迴圈體中命令,與while剛好相反

  • 程式碼示例
var1=5
until [ $var1 -eq 0 ]
do
  echo $var1
  var1=$[ $var1 - 1]
done

5. break 語句

list="test1 test2 test3"
for value in $list
do
  if [ "$value" = 'test2' ]
  then
    break
  fi
  echo $value
done

預設跳出當前迴圈, breadk 2 則跳出雙層迴圈的外層迴圈

6. continue 語句

list="test1 test2 test3"
for value in $list
do
  if [ "$value" = 'test2' ]
  then
    continue
  fi
  echo $value
done

預設終止某次迴圈中的其他命令,continue 2則終止外層迴圈中的其他命令,但不終止迴圈