是否有任何hack在運行時不在bash中評估變量?我有一個for循環是這樣的: 問題是我有它回聲裏面...否則這個工程太棒了!在for循環運行之前不會評估變量
for i in $(seq 0 100); do echo $(echo $RANDOM % 10 | bc); done
結果例如總是3 ...
是否有任何hack在運行時不在bash中評估變量?我有一個for循環是這樣的: 問題是我有它回聲裏面...否則這個工程太棒了!在for循環運行之前不會評估變量
for i in $(seq 0 100); do echo $(echo $RANDOM % 10 | bc); done
結果例如總是3 ...
除了你的問題:你的解決方案使用2個外部進程,1管,1子對一件容易的事。純擊:
for ((CNTR=0; CNTR<=100; CNTR+=1)); do
echo $((RANDOM%10))
done
這裏需要一個附加字符串的回聲:'echo「foo $((RANDOM%10))」' – Smamatti
+1,這裏不需要外部過程。 –
或者,一個括號擴展可以使用:
for i in {0..100}; do
echo $((RANDOM%10))
done
當你想搶佔變量替換傳統的解決方案是使用引用和eval
。這不像純Bash解決方案那麼優雅,但顯然更便攜。
for i in $(seq 0 100); do
eval 'echo $RANDOM % 10 | bc'
done
這只是對原始代碼的最小重構,我只是爲了完整而發佈它。
如果你想要的只是一個數字,那麼幾乎不需要「bc」管道。 'R = $ RANDOM; Q = $ {R%?}; echo $ {r#$ q}'在純'sh'語法中執行此操作。 – tripleee
它對我來說很有用(即我得到不同的隨機數字)。 –