Đang chạy
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
kết quả test1là được in ra bàn điều khiển và echo $?in 1theo cách hiểu của tôi là chính xác, bởi vì lệnh sẽ trả về với nội dung được [b/d]ash -ctrả về trong khi
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
kết quả trong cùng một đầu ra, nhưng trả về 0theo echo $?.
Tôi muốn hiểu sự khác biệt này để mở rộng hiểu biết của tôi về shell và lập trình shell di động.
Tôi đang sử dụng bash4.4.12 và dash0.5.8-2.3ubfox1 trên Ubuntu 17.10 (Artful Aardvark).
&>là trong POSIX. Đó là&tiếp theo>. Trongfoo &> barđó, đó làfoo &để bắt đầufootrong nền và> barđể thực hiện chuyển hướng mà không cần lệnh.bashkhông tuân thủ POSIX khi nó diễn giải nó khác đi.