Драсти!
Подскажите, плиз, как сделать следующее:
есть переменная $xyz следующего содержания:
1 2 3
4 5 6Как сделать из нее массив из 2х элементов: 1 2 3 --- первый элемент. 4 5 6 - второй элемент?
xyz=($xyz) не катит, потому что получается массив из 6 элементов: первый эл-т: 1, второй: 2 и т.д.
>есть переменная $xyz следующего содержания:
>1 2 3
>4 5 6как ты получил такую переменную?
Покажи с помощью какого кода такую переменную можно получить...
>как ты получил такую переменную?
>Покажи с помощью какого кода такую переменную можно получить...
легко, напримерxyz='1 2 3
4 5 6'или
xyz="`cat file`"
#где file содержит несколько строк с пробелами\^P^/
>>есть переменная $xyz следующего содержания:
>>1 2 3
>>4 5 6
>
>как ты получил такую переменную?
>Покажи с помощью какого кода такую переменную можно получить...
если строки в переменной разбиты \n например так:
xyz=`echo -e "1 2 3\n4 5 6"то
$line1=`printf "$xyz\n" | head -1`
$line2=`printf "$xyz\n" | tail -1`
$res_array=("$line1" "$line2")если пробелы, то надо еще подумать ;) т.к. в общем случае размерности все таки неизвестны :)
Драсти!
Подскажите, плиз, как сделать следующее:
есть переменная $xyz следующего содержания:
1 2 3
4 5 6Как сделать из нее массив из 2х элементов: 1 2 3 --- первый элемент. 4 5 6 - второй элемент?
xyz=($xyz) не катит, потому что получается массив из 6 элементов: первый эл-т: 1, второй: 2 и т.д.при создании массива
xyz=($xyz)
все елементы разбиваются разделителями содержащимися в переменной $IFS , по умолчанию пробел, табулятор, перевод строки
следующий скрипт решает твою проблему
xyz="1 2 3
4 5 6"IFS=$'\n'
xyz=( $xyz )echo ${xyz[0]}
echo ${xyz[1]}
>при создании массива
>xyz=($xyz)
>все елементы разбиваются разделителями содержащимися в переменной $IFS , по умолчанию пробел,
>табулятор, перевод строки
>следующий скрипт решает твою проблему
>
>
>xyz="1 2 3
>4 5 6"
>
>IFS=$'\n'
>xyz=( $xyz )
>
>echo ${xyz[0]}
>echo ${xyz[1]}
>Самое элегантное решение! Спасибо большое за помощь!
for i in `echo $xyz | tr ' ' '~'`
do echo xyz=`echo $i | tr '~' ' '`
doneиначе никак, имхо. хотя мож и я чего не знаю..
(вместо тильды может быть любой _non-whitespace_ символ, гарантированно не встречающийся в xyz. если такового в природе не имеется (там любой символ встретиться может) то вместо tr можно использовать sed, типа sed -e 's/ /=-tuta_+_probel-=/g' , ну и обратно соотв.\^P^/
>Драсти!
>Подскажите, плиз, как сделать следующее:
>есть переменная $xyz следующего содержания:
>1 2 3
>4 5 6
>
>Как сделать из нее массив из 2х элементов: 1 2 3 ---
>первый элемент. 4 5 6 - второй элемент?
>xyz=($xyz) не катит, потому что получается массив из 6 элементов: первый эл-т:
>1, второй: 2 и т.д.c=0
xyz="1 2 3
4 5 6"echo -e "$xyz" |
while read line
do
arr[$c]=$line
echo "$c - ${arr[c]}"
c=$((c+1))
done
0 - 1 2 3
1 - 4 5 6