为什么这个shell命令总是返回1?

为什么这个shell命令总是返回1?

这是一个我无法回答的 shell 难题(bash)。

这将返回退出代码 1:

ping $HOSTNAME -c2 -W2 2&>1 > /dev/null

每次都会返回正确的退出代码(2、1 或 0)。

ping $HOSTNAME -c2 -W2

为什么第一个总是返回 1?我只是想隐藏/丢弃 ping 命令的所有输出。

答案1

看来顺序应该调整为:

ping "$myHost" -c2 -W2 > /dev/null 2>&1; echo $?
0

已解答这里本质上,第一部分> /dev/null将 stdOut 发送到 /dev/null,然后将 stdErr 重新路由到 stdOut。

相关内容