Bash
在bash中,是否可以在大括號擴展中使用整數變數
我有以下 bash 腳本:
#!/bin/bash upperlim=10 for i in {0..10} do echo $i done for i in {0..$upperlim} do echo $i done
第一個
for
循環(在循環控制中沒有變數upperlim
)工作正常,但第二個for
循環(在循環控制中有變數upperlim
)不能。有什麼辦法可以修改第二個for
循環以使其正常工作?謝謝你的時間。
原因是 bash 中發生的事情的順序。大括號擴展發生在變數擴展之前。為了實現您的目標,您需要使用 C 風格的 for 循環:
upperlim=10 for ((i=0; i<=upperlim; i++)); do echo "$i" done
要使用內置外掛以您的風格完成此操作,您必須使用 eval:
d=12 for i in `eval echo {0..$d}` do echo $i done
但隨著
seq
:lowerlimit=0 upperlimit=12 for i in $(seq $lowerlimit $upperlimit) do echo $i done
就我個人而言,我發現使用
seq
更具可讀性。