Shell
為什麼 stderr 中沒有“權限被拒絕”?
我有一個命令:
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 文件。