Đang chạy
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
kết quả test1
là được in ra bàn điều khiển và echo $?
in 1
theo 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 -c
trả 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ề 0
theo 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 bash
4.4.12 và dash
0.5.8-2.3ubfox1 trên Ubuntu 17.10 (Artful Aardvark).
&>
là trong POSIX. Đó là&
tiếp theo>
. Trongfoo &> bar
đó, đó làfoo &
để bắt đầufoo
trong nền và> bar
để thực hiện chuyển hướng mà không cần lệnh.bash
không tuân thủ POSIX khi nó diễn giải nó khác đi.