У меня проблема в одном из моих скриптов оболочки. Спросил несколько коллег, но они все только качают головами (после некоторого расчесывания), поэтому я пришел сюда за ответом.
Согласно моему пониманию следующий скрипт оболочки должен вывести «Count is 5» в качестве последней строки. За исключением того, что это не так. Это печатает "Количество равно 0". Если заменить «while read» на любой другой вид цикла, он работает просто отлично. Вот сценарий:
echo "1"> input.data echo "2" >> input.data echo "3" >> input.data echo "4" >> input.data echo "5" >> input.data CNT = 0 cat input.data | пока читаешь; делать пусть CNT ++; echo "Подсчет в $ CNT" сделанный echo "Count is $ CNT"
Почему это происходит и как я могу предотвратить это? Я пробовал это в Debian Lenny и Squeeze, тот же результат (то есть bash 3.2.39 и bash 4.1.5. Я полностью признаю, что не являюсь мастером сценариев оболочки, поэтому любые указатели приветствуются.