From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <43C68C6A.5000600@altlinux.ru> Date: Thu, 12 Jan 2006 19:05:46 +0200 From: Sviatoslav Sviridov User-Agent: Thunderbird 1.5 (Windows/20051201) MIME-Version: 1.0 To: ALT Devel discussion list Subject: Re: [devel] Re: ... bash References: <200512271107.38272.lav@altlinux.ru> <20051227121056.4289b9e7.dfo@antex.ru> <43B10B4D.3060007@vzljot.ru> <200512281525.41763.zerg@altlinux.org> <43C6714C.2040008@vzljot.ru> In-Reply-To: <43C6714C.2040008@vzljot.ru> X-Enigmail-Version: 0.94.0.0 Content-Type: text/plain; charset=windows-1251 Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 12 Jan 2006 17:05:47.0346 (UTC) FILETIME=[6E883320:01C6179A] X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2006 17:06:03 -0000 Archived-At: List-Archive: List-Post: Vitaly Ostanin wrote on 1/12/2006 5:10 PM: >>>> while read var; do >>>> ... >>>> done < infile >>> А как то же самое сделать для переменной (содержащей список >>> строк) вместо infile ? У меня не заработал ни один из вариантов. >> ls -d1| \ >> while read l >> do >> ls -l "$l" >> done > > Исходная задача в изменении глобальной переменной внутри while. В > этом примере while после |, и переменные родительскому процессу > не возвращаются. > > Из > http://www.tldp.org/LDP/abs/html/ > я так понял, что единственный вариант - дописывание значений > внутри while в файл, и потом чтение этого файла родительским > процессом. Ну почему же... Извините, пропустил начало дискуссии... но может угадаю чего надо? ;) Из процитированного понял, что надо чтобы while выполнялся в родительском процессе и при этом читал вывод другого процесса? что-то типа вот этого: $ list="line1 > line2 > line3" $ a=qqq $ while read l; do a="$l"; done < <(echo "$list") $ echo $a line3 Так пойдет? -- Best Regards, Sviatoslav Sviridov