Doğru açıklama jsbillings ve geekosaur tarafından zaten yapıldı , ama bu konuda biraz genişleyeyim.
Bash dahil çoğu kabukta, bir boru hattının her bir tarafı bir alt kabuk içerisinde çalışır, böylece kabuğun iç durumundaki herhangi bir değişiklik (ayar değişkenleri gibi) bir boru hattının bu segmentiyle sınırlı kalır. Bir alt kabuktan alabileceğiniz tek bilgi çıktılarını (standart çıktıya ve diğer dosya tanımlayıcılarına) ve çıkış kodunu (0 ile 255 arasında bir sayıdır). Örneğin, aşağıdaki kod parçası 0 yazdırır:
a=0; a=1 | a=2; echo $a
Ksh (AT&T kodundan türetilen, pdksh / mksh türevlerinden türetilen türevleri) ve zsh'da, bir boru hattındaki son öğe ana kabukta yürütülür. (POSIX, her iki davranışa da izin verir.) Yukarıdaki yukarıdaki snippet, 2 yazdırır.
Yararlı bir deyim, sürgünün devamını (veya boru hattının sağ tarafında ne varsa, ancak bir süre döngüsü aslında burada yaygındır) boru hattında eklemektir.
cat junk | {
while read var ; do x=55 ; done
echo x=$x
}