我有一个 bash 脚本,它只是调用不同的调用并将 stdout 和 stderr 输出重定向到不同的文件。
我已经这样做了:
command 1> datafile 2>> errorfile
但是,当命令错误时(例如,作为参数给出的用户名和密码组合错误),错误消息不会重定向到错误文件。当我运行此脚本时,我仍然在屏幕上看到错误消息。例如,错误消息表明我提供了错误的用户名和密码组合。
我究竟做错了什么?
我认为我不应该在屏幕上看到任何输出,因为我将 stdout 和 stderr 都重定向到文件。
也许程序没有写入stderr,而是直接打开/dev/tty与用户通信?当涉及到密码交互时,这种方法相当常见:软件希望确保密码提示能够“通过”用户,尽管有任何重定向。
如果是这种情况,您需要伪终端技巧来安排输出以最终出现在文件中。
如果你没有软件的源码,你可以使用 strace/truss 来找出程序到底在做什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)