&> 正在后台运行命令而不是重定向 stdout/err?

&> 正在后台运行命令而不是重定向 stdout/err?

我正在查看预提交 git hook 脚本。这是我正在努力解决的部分:

#!/bin/sh
...
testcmd="go test -race ${godirs} "
failed=
${testcmd} &> /dev/null # problematic line
if [ $? -ne 0 ] ; then
    failed=1
    ${testcmd}
fi

godirs是脚本中先前构建的文件夹列表。当我运行它时,我看到运行的输出testcmd略有延迟(它在我的下一个提示中打印)。似乎&>没有重定向 2 个输出。它在后台运行 go 测试,甚至不重定向输出。

我不擅长 shell 脚本。我知道我可以将其重写为> /dev/null 2> /dev/null但这是一个学习机会。我该如何解决这个问题以便我仍然可以使用&>

相关内容