4 回答

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
for i in $(seq 1 $END); do echo $i; done
seq

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
seq
END=5for ((i=1;i<=END;i++)); do echo $idone# ==> outputs 1 2 3 4 5 on separate lines
for ((expr1;expr2;expr3));
for (expr1;expr2;expr3)
((expr))

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
這就是原始表達(dá)式不起作用的原因。
從…巴什:
在任何其他展開之前執(zhí)行大括號展開,并在結(jié)果中保留其他展開所特有的任何字符。這是嚴(yán)格意義上的文字。Bash不對擴(kuò)展上下文或大括號之間的文本應(yīng)用任何語法解釋。
所以,支撐展開是早期作為純文本宏操作所做的事情,在此之前。參數(shù)展開
shell是宏處理器和更正式的編程語言之間高度優(yōu)化的混合。為了優(yōu)化典型的用例,語言變得更加復(fù)雜,并接受了一些限制。
建議
我建議堅(jiān)持POSIX1特征。這意味著使用for i in <list>; do
,如果列表已經(jīng)已知,則使用while
或seq
,見:
#!/bin/shlimit=4i=1;?while?[?$i?-le?$limit?];?do ??echo?$i ??i=$(($i?+?1))done#?Or?-----------------------for?i?in?$(seq?1?$limit);?do ??echo?$idone
1.Bash是一個(gè)很好的shell,我通過交互方式使用它,但是我不把bash主義放在我的腳本中。腳本可能需要一個(gè)更快、更安全、更嵌入風(fēng)格的shell。
添加回答
舉報(bào)