Согласно справочным страницам bash(1), когда я запускаю следующее:
set -e
x=2
echo Start $x
while [ $((x--)) -gt 0 ]; do echo Loop $x; done | cat
echo End $x
Вывод будет:
Start 2
Loop 1
Loop 0
End 2
После цикла (запускается как подоболочка) переменная x сбрасывается до 2. Но если я удалю канал, x будет обновлен:
Start 2
Loop 1
Loop 0
End -1
Мне нужно изменить x, но мне также нужна труба. Любая идея, как обойти эту проблему?
| cat
? Делает ли это что-то значимое? - person devnull   schedule 04.06.2013