BASH:错误消息未被重定向到文件

cod*_*ear 2 bash redirect io-redirection

我有一个bash脚本,它只调用不同的调用并将stdout和stderr输出重定向到不同的文件.

我这样做了:

command 1> datafile 2>> errorfile
Run Code Online (Sandbox Code Playgroud)

但是,当命令错误时(例如,作为参数给出错误的用户名和密码组合),错误消息不会重定向到错误文件.我运行此脚本时仍然在屏幕上看到错误消息.例如,错误消息表明我提供了用户名和密码的错误组合.

我究竟做错了什么?我以为我应该在屏幕上看不到输出,因为我将stdout和stderr重定向到文件.

Mar*_*wis 6

也许该程序不是写入stderr,而是直接打开/ dev/tty与用户进行通信?这种方法在密码交互方面相当普遍:尽管有任何重定向,软件仍希望确保密码提示能够"通过"给用户.

如果是这种情况,您需要伪终端技巧来安排输出结束文件.

如果您没有该软件的来源,您可以使用strace/truss来了解该程序的实际用途.