有些程序将错误打印到 stdout 而不是 stderr,并且在发生错误时不设置 $?。为什么?

有些程序将错误打印到 stdout 而不是 stderr,并且在发生错误时不设置 $?。为什么?

udisks参见标题。我最近在和中都见过两次这种情况pacmd,因此编写脚本的难度增加了 100 倍。程序员为什么要这样做?

例如,我想将给定程序(接收器输入)的音频输出切换到不同的输出设备(接收器):

$ pacmd move-sink-input $sink_input $sink
Welcome to PulseAudio! Use "help" for usage information.
>>> No sink input found with this index.
>>> $ pacmd move-sink-input $sink_input $sink > /dev/null
$ echo $?
0

答案1

pactl更适合运行单个命令并提供更好的反馈。

pacmd更适用于与 PulseAudio 守护进程的“shell 会话”。

相关内容