Bash

Vyacheslav Karamov ubuntulist на yandex.ru
Ср Окт 28 13:24:14 GMT 2009


Vyacheslav Karamov пишет:
> Vladimir Khramtsov пишет:
>   
>>> #!/bin/bash
>>>
>>> var1=
>>> var2=
>>>
>>> cat $1 | while read -e var1 var2
>>> do
>>>    echo "var1 = $var1 var2  =  $var2"
>>> done
>>>     
>>>       
>> Вячеслав, мне стыдно, но вынужден спросить. Вы предложили интересное
>> решение, но как полученные переменные вынести за пределы цикла? К
>> примеру:
>>
>> echo "123 456" | while read -e var1 var2
>> do
>>    echo "var1 = $var1 ; var2  =  $var2"
>> done
>> echo "var1 = $var1 ; var2  =  $var2"
>>
>> На выходе:
>> var1 = 123 ; var2  =  456
>> var1 =  ; var2 =
>>
>> Что не так?! O_o
>>   
>>     
> Вы упустили инициализацию ПЕРЕД циклом :)
>
>
> Я же не знаю всей задачи, я предложил решение исходя из собственного 
> понимания потребностей автора.
>
>   
Ничто не мешает "углубить и расширить" код таким образом:

#!/bin/bash

unset var1 var2 i
declare -a arr1
declare -a arr2

cat $1 | while read -e var1 var2
do
   arr1[i]   = var1;
   arr2[i++] = var2;
done

Вот Вам и два заполненных массива.






Подробная информация о списке рассылки ubuntu-ru