Shell

迴聲>>不工作

  • July 2, 2017

這就是我要逐步實現的目標:

  1. ls
  2. 然後反轉它的輸出
  3. 然後在這個文件的最後添加一個新行

因此,我製作了以下一行腳本,但它給出了錯誤

(ls | tac | echo >>) > ./foobar

我可以通過拆分為多個命令來做到這一點,但我試圖在一個命令中做到這一點。

我很困惑,因為echo >> ./foobar在文件末尾插入了一個新行。

那為什麼我的程式碼行不起作用?為什麼echo >>不在文件描述符末尾添加新行而是給出錯誤?我在這裡做錯了什麼?

告訴外殼程序將>>命令輸出附加到符號後面的文件名(因此您至少必須在右括號之前添加一個名稱)。

對於您想做的事情,您可以執行以下操作:

ls | tac > ./foobar; echo >>./foobar

或者:

(ls | tac; echo ) >./foobar

兩者都達到了相同的結果。

要達到指定的結果,可以執行以下操作:

echo -e "`ls | tac`\n" > ./foobar

這樣, 的輸出ls通過管道傳輸tac。結果包含在echo命令中,轉義字元解釋echo將添加一個新行。然後可以將標準輸出重定向到文件。

我不相信可以將標準輸出通過管道傳輸到 echo 中。

引用自:https://unix.stackexchange.com/questions/374509