2016-04-10 52 views
0

下面我成功地重定向錯誤消息,在下面的過程中的文本文件重定向操作:我懷疑的例子

$ ls + 2>err.txt 
    $ cat err.txt 
    ls: cannot access +: No such file or directory 

但是當我嘗試嘗試用echo命令相同的過程中它顯示不同的輸出並且無法將錯誤消息重定向到文本文件。

$ echo)hey 2>err.txt 
bash: syntax error near unexpected token `)' 
+1

這裏bash語法被破壞。它不能解析超越「)」來獲得重定向。 – karakfa

+1

使用'echo「)hey」2> err.txt'。但請注意''hey'通過stdout,並且您正在重定向stderr流。括號是bash中的保留符號。爲了讓''''輸出字符串的一部分,將字符串括在''' – Jens

+0

應該是'echo')hey「2> err.txt' – isedev

回答

3

在你的第一個例子,它是ls命令產生被寫入err.txt的錯誤消息。

在你的第二個命令,你期望下列情況發生:

  1. 該生產線成功解析
  2. bash打開err.txtecho
  3. echo嘗試將標準錯誤輸出)hey
  4. echo遇到錯誤
  5. 錯誤消息被寫入到err.txt

但是,bash從來沒有超過第一行,所以沒有發生2到5次。相反,外殼會立即停止處理該行並將錯誤消息打印到其自己的標準錯誤。