Bash: кажется, что конвейер в цикле while вызывает странное поведение с оператором continue

У меня есть две функции bash: tsoc и loopex

Я поместил их в средство проверки различий, чтобы вы могли видеть, что они почти идентичны: https://www.diffchecker.com/nygtg1l4

Когда я запускаю loopex, я получаю желаемый тип вывода: "Оторванный" или "Пройдено" для каждого элемента во внешнем цикле. Однако для tsoc, функции, которая почти идентична, я получаю «Оторванные» после каждой строки, будь то «Пройдено» или «Оторванные», что нежелательно.

Выходы

лупекс (правильно)

$ loopex  
Checking 1: Orphaned
Checking 2: Orphaned
Checking 3: Passed
Checking 4: Orphaned
Checking 5: Orphaned

цок (неверно)

$ tsoc
Checking ./assignments/documents/Module2.pdf: Passed
Orphaned
Checking ./announcements.html: Passed
Orphaned
Checking ./projects.html: Passed
Orphaned
Checking ./assignments1.html: Passed
Orphaned
Checking ./lectures1.html: Passed
Orphaned
Checking ./random.txt: Orphaned
Checking ./index.html: Passed
Orphaned
Checking ./news.html: Passed
Orphaned

Как видите, Orphaned печатается после каждой строки в tsoc, и я совершенно не понимаю, почему. Единственное, что я могу придумать, это то, что передача в цикл while каким-то образом нарушает логику оператора continue. Однако на странице руководства для continue указано, что он работает для циклов «пока» и «для».

Я был в этом в течение нескольких часов, и я в своем уме. Мы будем очень признательны за любой свет, который вы можете пролить на ситуацию.


person TW80000    schedule 08.07.2015    source источник
comment
Конвейеры вводят вложенные оболочки. continue не может пересекать границы подоболочки. Посмотрите, как все циклы в Bash FAQ 001 используют перенаправление вместо конвейеров? Вот почему. Повторяй.   -  person Etan Reisner    schedule 08.07.2015
comment
Вопросы должны содержать достаточно кода, чтобы выступать в роли минимального воспроизводящего самого вопроса.   -  person Charles Duffy    schedule 08.07.2015
comment
Кроме того, BashFAQ № 24: mywiki.wooledge.org/BashFAQ/024   -  person Charles Duffy    schedule 08.07.2015