我有一個命令:mywritercmd -f /tmp/test 2>&1 > log.txt
我在 bash 終端機中運行,命令返回error: could not open output file "/tmp/test": Permission denied
然而,這個錯誤訊息並沒有寫在日誌.txt文件,它保持空...
為什麼?
我猜想這條訊息應該發送到 stderr,然後發送到文件中,但不知何故它沒有。
答案1
排序會導致差異。命令列從左到右進行評估。當它到達 時2>&1
,指令是將 stderr 傳遞到 stdout 所在的地方。目前,該> log.txt
部件尚未進行評估。結果,stderr 保持預設狀態,即輸出到終端。
mywritercmd -f /tmp/test > log.txt 2>&1
將導致您想要的行為,並導致錯誤訊息寫入 log.txt 檔案。