У меня есть больший сценарий, но это меньше, один показывает проблему:Почему эта переменная не изменяется?
#!/bin/bash
x=0
if [[ $x == 0 ]]
then
ls | while read L
do
x=5
echo "this is a file $L and this is now set to five --> $x"
done
fi
echo "this should NOT be 0 --> $x"
Если переменная установлена за пределами цикла в то время, то он работает, как я ожидал. Версия bash - 3.2.25 (1) -release (x86_64-redhat-linux-gnu). Я буду чувствовать себя таким глупым, если это будет какая-то очевидная вещь.
Это общий вопрос. Read faq: http://mywiki.wooledge.org/BashFAQ/024 –
Еще одна отличная ссылка: [Почему вы не должны разбирать выходные данные ls] (http://mywiki.wooledge.org/ParsingLs) –
Проверьте это как thread: http://stackoverflow.com/questions/13233452/bash-variable-change-doesnt-persist. – konsolebox