考慮以下sh命令:「&>>」 在SH在Ubuntu 16.04.2和Fedora 24的行爲不同
sh -c 'sleep 3 &>> /dev/null'
&>>
應該重定向stdout
和stderr
。但是,Fedora 24和Ubuntu 16.04.2的解釋不同。
在Fedora 24中,它正好以這種方式工作,並且上面的命令一直等到sleep
結束。
在Ubuntu 16.04.2中,該命令的運行方式與sleep 3 & >> /dev/null
類似,即sleep
發送到後臺,命令立即退出。
由於我在R腳本中調用諸如foo arg1 arg2 output_file &>> test.log
之類的東西,並期望命令以output_file
結尾,所以這種差異會導致出現問題並且不容易找到。在Fedora 24中,它按預期工作,但令我驚訝的是Ubuntu 16.04.2中的行爲變化。
我不確定這是否是有記錄的行爲。
可能'sh'是Fedora中'bash'的鏈接? 'bash -c'sleep 3&>>/dev/null''在Ubuntu上工作嗎? – Sundeep
如果你正在編寫null流,你不需要'''只需'>'就足夠了,即'sh -c'sleep 3&>/dev/null' ' – Inian
'bash -c'sleep 3&>>/dev/null'在兩側完全相同 –