|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Alexey Morozov 2:5020/400 11 Dec 2000 11:22:19 To : yx Subject : Re: Памяти любителей shell программинга посвящается -------------------------------------------------------------------------------- yx <ypp@mail.univ.kiev.ua> wrote: >> Вот такой вот простецкий скрипт, который я старался писать максимально >> аккуратно. Внимание, вопрос: у кого что напечаталось в результате его >> исполнения? Я пробовал на bash-2.03.0(1)-release, bash-2.04.11(1)-release, >> ash какой-то версии, ksh-5.2.12, и результаты меня, мягко говоря, озадачили. >> Это так и задумано, что из простого while'а в рамках _одного процесса_ >> не передать переменные наружу?? y> 1) комманды для конвейера выполняются в отдельных subshell'ах y> - значит "в рамках одного контекста" в твоем случае не справедливо. y> 2) $$ выдает pid текущей shell, а не subshell - отсюда следует, y> что несмотря на то что, ты видишь в своем примере один и тот же pid y> - это разные шеллы. Вот это - может быть. y> 3) "не передать переменные наружу" y> $ man sh y> /import y> Pattern not found y> - справедливо. y> end) export (исходя из того, где ты его расположил, y> ты его видимо понимаешь как import,) y> - тебе тоже не поможет - им ты можешь передать значение переменной y> в subshell, но все ее изменения внутри subshell'а будут касаться только y> ее локальной копии. Используя read с pipe (и соотв-но subshell) y> модифицировать значение пер-й (supshell'а) тоже не получится. Hу, учитывая 1) и 2) это, в общем, понятно. Про $$ - спасибо, я, на самом деле, пользовал (и вспоминал) его по аналогии с perlvar, не заглядывая особо в man по sh, кто б знал, что там свинья обнаружится. y> p.s. y> Считай что-нужно в пер-ю, с ней и работай в тек-м shell'е. y> И не понятно зачем столько shell'ов перебирать - в любой доке y> к стд bourne shell есть инф-я о назн-и pipeline и export. Я просто привык, что очевидность кода должна вызывать очевидность результата. Собственно говоря, export'а в оригинале не было, это я уж с горя туда впихнул все, что пришло на ум. Hу и про неочевидность $$ - выше... А нормального решения проблемы (иначе, как, удавив cat, сделать <"$INPUT"), я так и не увидел :-(( --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.unix/11749909fdddf.html, оценка из 5, голосов 10
|