прочтите одну строку с «read» в bash, но без «while»

Я пытался понять, как «пока читал» работает в bash, и наткнулся на поведение, которое не могу объяснить:

root@antec:/# var=old_value
root@antec:/# echo "new_value" | read var && echo $var
old_value
root@antec:/# 

Оно отлично работает с «пока читается»:

root@antec:/# var=old_value
root@antec:/# echo "new_value" | while read var; do echo $var; done
new_value
root@antec:/# 

Может кто-нибудь объяснить, почему это не работает, когда read используется без while? Более того, я не понимаю, как значение «var» в основной оболочке можно увидеть из якобы подоболочки после трубы ..

Спасибо

8
задан user368507 28 July 2011 в 21:06
поделиться