Jakiś czas temu miałem problemy z tym iż podczas wykonywania pętli while dane nie są widoczne w pętli ani jak się skończy to które są wcześniej przykład:
$ TT=1; ls -la | while read line; do echo ${TT}; TT=11; done; echo ${TT}
1
11
11
11
11
11
11
11
11
11
11
1
powodem tego jest to iż while odpalane jest w osobnym bashu zatem jak się kończy while to i zakończenie bash kończy swoje życie. Rozwiązanie:
$ TT=1; ls -la | while read line; do echo ${TT}; TT=11; done; echo ${TT}
1
11
11
11
11
11
11
11
11
11
11
1