Shell

為什麼 stderr 中沒有“權限被拒絕”?

  • October 25, 2021

我有一個命令:mywritercmd -f /tmp/test 2>&1 > log.txt我在 bash 終端中執行,命令返回error: could not open output file "/tmp/test": Permission denied

不過,此錯誤消息並未寫入log.txt文件中,它保持為空…

為什麼?

我猜想這條消息應該先發送到 stderr,然後再發送到文件中,但不知何故它不是。

排序導致差異。命令行從左到右進行評估。當它到達2>&1時,指令是將 stderr 傳遞到 stdout 所在的任何地方。此時,該> log.txt部分尚未評估。結果,stderr 保持預設,即輸出到終端。

mywritercmd -f /tmp/test > log.txt 2>&1將導致您想要的行為,並導致將錯誤消息寫入 log.txt 文件。

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