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