Jawaban umum adalah tidak. Dimungkinkan untuk prog2keluar prog1bahkan sebelum mulai (jelas itu tidak dapat terjadi jika prog2benar-benar membaca beberapa input, yang Anda harapkan akan dilakukan jika Anda menggunakannya dalam pipa). Sangat mungkin untuk prog2keluar sebelum prog1; ini terjadi misalnya ketika prog2program pencarian yang keluar segera setelah menemukan kecocokan, dalam hal ini prog1mungkin belum selesai menghasilkan semua data.
Tidak ada cara langsung untuk prog2mengambil status keluar prog1atau bahkan untuk mengetahui yang prog1telah keluar. Yang prog2bisa diketahui hanyalah bahwa prog1ujung pipa itu sudah ditutup, yang bisa dilakukan tanpa sekarat.
Jika Anda ingin mendapatkan status keluar prog1dari prog2, ada dua metode umum: Anda dapat menulisnya ke file, atau Anda dapat mengirimkannya melalui pipa. Mengirim status output sebagai baris terakhir dari data yang disalurkan adalah suatu kemungkinan. Anda harus memastikan untuk tidak memproses baris terakhir sampai Anda tahu bahwa itu adalah baris terakhir, yaitu sampai Anda mencoba membaca baris berikutnya.
{ prog1; echo $?; } | …
Berikut adalah contoh di mana sisi kanan adalah filter teks yang mewarnai setiap baris yang mengandung kata "error" merah. Jika sisi kiri gagal, sisi kanan keluar dengan status yang sama.
{ prog1; echo $?; } | awk '
NR != 1 {
if (line ~ /[Ee][Rr][Rr][Oo][Rr]/) print "\033[31m" line "\033[0m";
else print line;
}
{line = $0}
END {exit($0)}
'