2013-05-05 125 views

回答

7

發生了什麼事是$x作爲單個命令執行。 shell不是「重新解析」$x的內容,所以它不是特別設置重定向和產卵sort

發生什麼是cat得到三個參數:file,|sort。您在該目錄中沒有名爲|sort的文件,因此cat無法打開它們。 (我猜是什麼錯誤說反正)

你可以讓你通過運行預期的結果:

eval "$x" 

我會避免使用eval如果可以的話,雖然,它can be dangerous

前綴你有LC_ALL=命令,要求對國際網站幫助之前獲得英語的錯誤消息。
例如LC_ALL= $x

+0

這確實是什麼錯誤消息說(沒有這樣的文件或目錄)。 – EOL 2013-05-05 15:44:01

+0

謝謝@Mat和@EOL。我希望在'until'命令中使用一個變量,例如'until $ var'來減少代碼行,因爲在不同情況下,'until'命令語句會有所不同。在其中一種情況下,我需要執行像'var =「command1 | command2」'這樣的任務。現在它不起作用。有沒有解決這個問題的另一種方法? – 2013-05-05 16:02:43

+2

@ Wenhao Yang:你應該爲此提出一個新問題,但一定要包括足夠的細節,因爲這看起來有點奇怪。你不能使用函數而不是變量嗎? – Mat 2013-05-05 16:08:24