Разделите переменную Unix и поставьте ее в цикле - PullRequest
0 голосов
/ 10 апреля 2019

Допустим, у меня есть значения ниже

Variable 1 = 12345 45677

Variable 2 = 15,16,17,18 11,10,09,08

Я хочу другую переменную, где я могу поставить в другой цикл, как показано ниже

15,16,17,18 12345

11,10,09,08 45677

Что бы я сделал с этим значением - язапишем это как var 3 = 15,16,17,18 и var 4 = 12345 в файл.Аналогично для следующего ряда.

Я пробовал двойной цикл

for I in $var1 
do 
  for j in $var2 
  do 
  echo $I, $j
done 
done

что это было сделано -

15,16,17,18 12345
15,16,17,18 45677

11,10,09,08 12345
11,10,09,08 45677

Ответы [ 4 ]

1 голос
/ 10 апреля 2019

Конвертировать переменные в массивы и циклически перебирать массивы:

a1=( $var1 )
b1=( $var2 )
for ((i=0;i<${#b1[@]}; i++)); do
   echo "${b1[i]} ${a1[i]}"
done
1 голос
/ 10 апреля 2019

При условии, что ваши начальные переменные var1 и var2:

read var3 foo var4 bar <<< "${var1} ${var2}"

ИЛИ

var3=${var1% *}; var4=${var2% *}

Пожалуйста, поделитесь выводом echo $var3 $var4.

0 голосов
/ 10 апреля 2019

awk путь:

$ var1="12345 45678 78912"
$ var2="15,16,17,18 11,10,09,08 25,24,23,22"

$ awk '{for(i=1;i<=NF/2;i++)print $(i+NF/2) " " $i}' <<< "$var1 $var2"
15,16,17,18 12345
11,10,09,08 45678
25,24,23,22 78912
0 голосов
/ 10 апреля 2019

Подчеркните разделенный пробелами список с символами новой строки и используйте paste, чтобы присоединиться к ним:

var1="12345 45677"
var2="15,16,17,18 11,10,09,08"
paste <(<<<$var1 tr ' ' '\n') <(<<<$var2 tr ' ' '\n')

выведет:

12345   15,16,17,18
45677   11,10,09,08

Вы можете использовать опцию paste -d' ' для разделения спискаесли хотите, через пробел.

Вы не можете использовать любой инструмент coreutils для его анализа или даже простой цикл bash while:

paste <(<<<$var1 tr ' ' '\n') <(<<<$var2 tr ' ' '\n') |
while read -r i j; do
    echo $i $j
done

@ edit Я заметил, что в вашем выводе var1 значения идут после var2 значений.Просто переключите 1 с 2 в строке вставки, как paste <(<<<$var2 tr ' ' '\n') <(<<<$var1 tr ' ' '\n'), и они будут переключены.

Доступна живая версия на tutorialspoint .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...