我正在寫for循環。但是循環取決於位置參數的內容。bash:如果分支爲兩個不同的循環
如果位置參數是
seq 2 1 10
,環路是for i in $(seq 2 1 10)
如果位置參數是純粹的數字,例如
1 2 5 7 10
,則環路是for i in 1 2 5 7 10
。
我想這一點,但沒有奏效:
test() {
if [[ $1 == seq ]]
then
for i in $(seq $2 $3 $4)
else
for i in [email protected]
fi
do
echo $i
done
}
我也試過這樣:
test2() {
if [[ $1 == seq ]]
then
sss="for i in $(seq $2 $3 $4)"
else
sss="for i in [email protected]"
fi
$sss
do
echo $i
done
}
也不起作用。
所以我的問題是:
- 我知道我可以,如果裏面明確寫二環路。但是,如果循環內容很大,這會浪費代碼空間。有沒有更好的方法?
- 在我的第二次嘗試中,爲什麼
$sss
不會擴展爲for
句子,並通過bash正確解析?
'test'不是函數的最佳名稱,因爲它與shell內建'test'衝突。 – codeforester