为什么此命令的输出在 Sh 和 Bash 之间不同?

Why This Command's Output Is Different Between Sh and Bash?

我正在尝试 运行 Bash 中的以下 if 语句(以确定 Xorg 是否 运行ning):

if ! xset q &>/dev/null; then echo Yes; fi

当我在 Bash 下 运行 时什么都不打印。但是,如果我 运行 它在 sh 下,它会给我一个 "Yes" 和其他与 xset 相关的输出。

两者之间的 if 语句输出怎么可能不同?有没有办法在 Sh 上修复它?

&> 在 sh 中不是有效的重定向。 & 发送命令 xset q 到后台使用 if ! xset q >/dev/null 2>&1;then echo 'test'; fi;