跑步
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)上使用bash
4.4.12和dash
0.5.8-2.3ubuntu1。
&>
在POSIX中。这是&
其次>
。在中foo &> bar
,这是foo &
从foo
后台开始的,> bar
无需命令即可执行重定向。bash
解释不同时,它不符合POSIX。