Setelah setiap perintah, kode keluar dapat ditemukan dalam $?variabel sehingga Anda akan memiliki sesuatu seperti:
ls -al file.ext
rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi
Anda harus berhati-hati dengan perintah pipa karena $?hanya memberi Anda kode kembali elemen terakhir dalam pipa, jadi dalam kode:
ls -al file.ext | sed 's/^/xx: /"
tidak akan mengembalikan kode kesalahan jika file tidak ada (karena sedbagian dari pipa sebenarnya bekerja, mengembalikan 0).
The bashshell benar-benar menyediakan sebuah array yang dapat membantu dalam kasus itu, bahwa menjadi PIPESTATUS. Array ini memiliki satu elemen untuk setiap komponen pipa, yang dapat Anda akses secara individual seperti ${PIPESTATUS[0]}:
pax> false | true ; echo ${PIPESTATUS[0]}
1
Perhatikan bahwa ini memberi Anda hasil dari falseperintah, bukan seluruh pipa. Anda juga bisa mendapatkan seluruh daftar untuk diproses sesuai keinginan Anda:
pax> false | true | false; echo ${PIPESTATUS[*]}
1 0 1
Jika Anda ingin mendapatkan kode kesalahan terbesar dari sebuah pipa, Anda bisa menggunakan sesuatu seperti:
true | true | false | true | false
rcs=${PIPESTATUS[*]}; rc=0; for i in ${rcs}; do rc=$(($i > $rc ? $i : $rc)); done
echo $rc
Ini berjalan melalui masing-masing PIPESTATUSelemen pada gilirannya, menyimpannya rcjika itu lebih besar dari nilai sebelumnya rc.