0
我有幾個嵌套循環可以在多次迭代中生成相同的數據。在sh中存儲一個循環的shell變量結果
我想將這些數據從一個內部循環保存在shell變量中。
是否有一種簡單的方法可以將輸出從循環重定向到變量中,而無需修改循環本身?
我有幾個嵌套循環可以在多次迭代中生成相同的數據。在sh中存儲一個循環的shell變量結果
我想將這些數據從一個內部循環保存在shell變量中。
是否有一種簡單的方法可以將輸出從循環重定向到變量中,而無需修改循環本身?
循環(for
,while
或until
)與其他任何命令一樣。您可以使用命令替換捕獲其輸出。
$ foo=$(for x in 1 2 3; do echo "Number $x"; done)
$ echo "$foo"
Number 1
Number 2
Number 3
但是,如果你的意思是重定向像你這樣重定向到文件:
for x in 1 2 3; do
echo "Number $x"
done > somefile.txt
foo=$(cat somefile.txt)
然後事情變得有點棘手。您不能直接寫入變量,但可以說最簡單的解決方法就是上述方法,它首先將輸出寫入文件,然後將文件讀回到變量中。
謝謝!事實上,這有效。我以爲'for'是特別的,因爲我試着用'time'來使用它,但它沒有奏效。順便說一句,有沒有辦法讓現有的'for'循環完全不變,例如,在前面一行有'foo = $(')? – cnst
是的,你可以在前一行開始命令替換,就像那樣,然後將結束的')'放在一行上。 – chepner