亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何迭代由Bash中的變量定義的一系列數字?

如何迭代由Bash中的變量定義的一系列數字?

如何迭代由Bash中的變量定義的一系列數字?當變量給出范圍時,我如何在Bash中迭代一組數字?我知道我可以這樣做(在Bash中稱為“序列表達式”)。文獻資料): for i in {1..5}; do echo $i; done這意味著:1 2 3 4 5然而,如何用變量替換任何一個范圍端點?這不管用:END=5for i in {1..$END}; do echo $i; done其中的指紋:{1..5}
查看完整描述

4 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

for i in $(seq 1 $END); do echo $i; done

編輯:我更喜歡seq),因為我實際上還記得它;)


查看完整回答
反對 回復 2019-06-01
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

這個seq方法是最簡單的,但是Bash有內置的算術計算。

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)C語言和類似語言,以及其他語言((expr))


查看完整回答
反對 回復 2019-06-01
?
MM們

TA貢獻1886條經驗 獲得超2個贊

這就是原始表達式不起作用的原因。

從…巴什:

在任何其他展開之前執行大括號展開,并在結果中保留其他展開所特有的任何字符。這是嚴格意義上的文字。Bash不對擴展上下文或大括號之間的文本應用任何語法解釋。

所以,支撐展開是早期作為純文本宏操作所做的事情,在此之前。參數展開

shell是宏處理器和更正式的編程語言之間高度優化的混合。為了優化典型的用例,語言變得更加復雜,并接受了一些限制。

建議

我建議堅持POSIX1特征。這意味著使用for i in <list>; do,如果列表已經已知,則使用whileseq,見:

#!/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是一個很好的shell,我通過交互方式使用它,但是我不把bash主義放在我的腳本中。腳本可能需要一個更快、更安全、更嵌入風格的shell。


查看完整回答
反對 回復 2019-06-01
  • 4 回答
  • 0 關注
  • 731 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號