У мене є проблема в одному зі моїх скриптів оболонки. Запитав у кількох колег, але всі вони просто хитають головою (після деяких подряпин), тож я прийшов сюди для відповіді.
Наскільки я розумію, наступний скрипт оболонки повинен друкувати "Count is 5" як останній рядок. За винятком цього немає. На ній друкується "Кількість 0". Якщо "поки читається" замінено будь-яким іншим циклом, це спрацює чудово. Ось сценарій:
echo "1"> input.data ехо "2" >> вхідні дані відлуння "3" >> input.data ехо "4" >> вхідні дані ехо "5" >> вхідні дані CNT = 0 cat input.data | під час читання; робити нехай CNT ++; відлуння "Відлік до $ CNT" зроблено ехо "Кількість - $ CNT"
Чому це відбувається і як я можу це запобігти? Я спробував це в Debian Lenny та Squeeze, такий же результат (тобто bash 3.2.39 і bash 4.1.5. Я повністю визнаю, що не є майстром сценарію оболонки, тому будь-які вказівники будуть вдячні.