2015-09-12 76 views
0

我有幾個嵌套循環可以在多次迭代中生成相同的數據。在sh中存儲一個循環的shell變量結果

我想將這些數據從一個內部循環保存在shell變量中。

是否有一種簡單的方法可以將輸出從循環重定向到變量中,而無需修改循環本身?

回答

1

循環(for,whileuntil)與其他任何命令一樣。您可以使用命令替換捕獲其輸出。

$ 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) 

然後事情變得有點棘手。您不能直接寫入變量,但可以說最簡單的解決方法就是上述方法,它首先將輸出寫入文件,然後將文件讀回到變量中。

+0

謝謝!事實上,這有效。我以爲'for'是特別的,因爲我試着用'time'來使用它,但它沒有奏效。順便說一句,有沒有辦法讓現有的'for'循環完全不變,例如,在前面一行有'foo = $(')? – cnst

+0

是的,你可以在前一行開始命令替換,就像那樣,然後將結束的')'放在一行上。 – chepner

相關問題