Title here
Summary here
for var in list
do
...
done
var
變量喺循環體外可以正常使用。
#!/usr/bin/env bash
for var in apple banana
do
echo "hello $var"
done
echo "outside $var"
hello apple
hello banana
outside var
變量存儲列表。
#!/usr/bin/env bash
list="apple banana"
list=$list" orange"
for var in $list
命令替換。
for var in $(cat file)
通配符遍歷目錄。
for var in /home/soda/*
環境變量 IFS(Internal Field Separator)指定咗字段分隔符。
echo $IFS
默認值係空,表示以下列字符分隔。
IFS=$'\n'
IFS=$'\n:;"'
表示以換行符、冒號、分號、雙引號作為分隔符。
i
變量喺外部正常訪問。
#!/usr/bin/env bash
for (( i = 1; i < 3; i++ ))
do
echo "index $i"
done
echo "last index $i"
index 1
index 2
last index 3
while test command
do
...
done
#!/usr/bin/env bash
i=3
while [ $i -gt 0 ]
do
echo "index $i"
i=$[ $i - 1 ]
done
index 3
index 2
index 1
多個 while
條件嘅時候,以最後一個條件嘅退出碼判斷。
until test command
do
...
done
#!/usr/bin/env bash
i=3
until [ $i -le 0 ]
do
echo "index $i"
i=$[ $i - 1 ]
done
index 3
index 2
index 1
支持指定退出循環嘅層數。
#!/usr/bin/env bash
for (( i = 0; i < 3; i++ )); do
echo "i=$i"
for (( j = 0; j < 3; j++ )); do
echo " j=$j"
if [ $j -eq 1 ]; then
break 2
fi
done
done
i=0
j=0
j=1
break
默認值係 1,表示退出 1 層循環。
#!/usr/bin/env bash
for (( i = 0; i < 3; i++ )); do
echo "i=$i"
for (( j = 0; j < 3; j++ )); do
echo " j=$j"
if [ $j -eq 1 ]; then
continue 2
fi
done
done
i=0
j=0
j=1
i=1
j=0
j=1
i=2
j=0
j=1
同 break
一樣,默認都係 1。
可以對循環中嘅標準輸出重定向。
#!/usr/bin/env bash
for var in apple banana
do
echo "hello $var"
done > output.txt
循環體嘅輸出會重定向到 output.txt
。
循環體嘅輸出仲可以用管道傳輸。
#!/usr/bin/env bash
for var in apple banana
do
echo "hello $var"
done | sort
我竟然有啲鍾意 break
嘅語法糖。