2012-10-03 61 views
0

如果我有一個腳本命令如何在shell腳本中使用變量重定向?

echo xx 2>&1 >junk 

我與它「XX」的文件。如果我有

R="2>&1 >junk" 
echo xx $R 

腳本腳本打印"xx 2>&1 >junk",而不是創建我的願望文件。
我怎樣纔能有一個可變的重定向? 在這種情況下,我要麼做重定向,要麼只是將 設置爲空字符串以避免重定向。但是我需要爲許多命令執行它,所以我想將它作爲一個變量來執行。
注意:環境是使用busybox中的ash shell嵌入Linux的。

回答

1

使用eval:

R="2>&1 >junk" 
eval echo xx $R 

順便說一句,如果你想重定向到文件的命令的標準錯誤,你必須重新排列重定向。 cmd 2>&1 > file會將stderr打印到原始stdout,但cmd > file 2>&1會將stderr和stdout指向指定的文件。

+0

謝謝。解決了我的問題,並在一個膨脹的foop中發現了一個錯誤! – rich