我有一个命令: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 文件。