跑步
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
根据我的理解,这导致将结果test1打印到控制台并echo $?进行打印1,因为命令应该返回内部[b/d]ash -c返回的内容,而
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
结果相同,但0根据则返回echo $?。
我想了解这种差异,以便加深对Shell和可移植Shell编程的了解。
我在Ubuntu 17.10(Artful Aardvark)上使用bash4.4.12和dash0.5.8-2.3ubuntu1。
&>在POSIX中。这是&其次>。在中foo &> bar,这是foo &从foo后台开始的,> bar无需命令即可执行重定向。bash解释不同时,它不符合POSIX。