LINUX.ORG.RU

Bash, Засунуть содержимое строк в переменные.


0

0

Кто знает, как лучше всего сделать:
Есть
$echo "line1
line2"
Хочется, чтобы
line1 попало в VAR1
line2 попало в VAR2

Проходят на ум варианты:
Вот замена:
1.
echo "aaa
bbb"|tr '\012' ':'
Потом как-нить разделить.

2.
$echo "aaa
bbb"|sed 1d
bbb

3.
T=`mktemp`
echo "aaa
bbb" >$T
read -d: V1 V2 <$T

Кто знает более правильный/короткий способ?
Спасибо.

★★★

Если bash, то можно использовать массивы:

$ A=( `echo -e '123 \n 3333'` )

$ echo ${A[0]}
123

$ echo ${A[1]}
3333

Ну а дальше VAR1=${A[0]}, VAR2=${A[2]} --- 
если нужно в переменные, а не в элементах массива...

И перед выполнением оператора = ( ) занести нужное значение в IFS
(если нужно чтобы в значения переменных попали и пробелы...

mky ★★★★★
()
Ответ на: комментарий от dilmah

только нужно учитывать что если ты это через | вызовешь то это будет подпроцесс и переменные не вернутся родителю.  Нужно из временного файла брать:

{ 
  IDX=1
  while read VAR$IDX; do
    true $((++IDX))
  done
} < /tmp/file

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.