Lari
bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
hasil test1
yang dicetak untuk menghibur dan echo $?
untuk mencetak 1
yang menurut saya benar, karena perintah harus kembali dengan apa yang [b/d]ash -c
dikembalikan dalam batin
dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;'
menghasilkan output yang sama, tetapi kembali dengan 0
menurut echo $?
.
Saya ingin memahami perbedaan ini untuk memperluas pemahaman saya tentang shell dan pemrograman shell portabel.
Saya menggunakan bash
4.4.12 dan dash
0.5.8-2.3ubuntu1 di Ubuntu 17.10 (Artful Aardvark).
&>
ada dalam POSIX. Itu&
diikuti oleh>
. Difoo &> bar
, itufoo &
dimulaifoo
di latar belakang dan> bar
untuk melakukan pengalihan tanpa perintah.bash
tidak sesuai dengan POSIX ketika menerjemahkannya secara berbeda.