On Thu, Jan 17, 2008 at 09:43:44PM +0200, Michael Shigorin wrote: > При этом что-нить вроде такого работает, как ожидается: > | while read first second junk; do > # something with $first (first IFS-delimited word) > # ...and with $second too... > # the rest of the line goes to $junk > done > > -- именно потому, что тут-то всё выполняется в одном сабшелле ;)
При этом вынуть из него что-то, ессно, можно через stdout сотоварищи или файлики. hiddenman@ рассказал вот ещё что: <hiddenman> re на твое сообщение в sysadmins@ про bash <hiddenman> я когда etcnet патчил, столкнулся с этой и другими проблемами <hiddenman> есть магический способ, почему-то мало где описан <hiddenman> #!/bin/bash A='test' echo $A | while read B; do C=$B echo "C in the subshell1 is $C" done echo "C out of the subshell1 is $C" while read D; do E=$D echo "E in the subshell2 is $E" done < <(echo "$A") echo "E out of the subshell2 is $E" <hiddenman> во втором варианте это не subshell. в результате мы снаруж имеем то, что изменили в этом while. да и работает он много быстрее, проверял <hiddenman> такая вот magic :) <hiddenman> можешь туда кинуть пока. я через nntp читаю, от рассылок отписался, но писать еще не пробовал через gmane.org :) <hiddenman> упс, зачем я лишнего наделал....вот исправленный вариант: <hiddenman> а, не , все правильно. внутри нужно присваивание сделать, переменные на время while read не экспортируются <hiddenman> то бишь, вариант: <hiddenman> #!/bin/bash A='test' echo $A | while read B; do echo "B in the subshell1 is $B" done echo "B out of the subshell1 is $B" while read C; do echo "C in the subshell2 is $C" done < <(echo "$A") echo "C out of the subshell2 is $C" <hiddenman> работать не будет -- ---- WBR, Michael Shigorin <[EMAIL PROTECTED]> ------ Linux.Kiev http://www.linux.kiev.ua/ _______________________________________________ Sysadmins mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/sysadmins
