让我们说我的价值观低于
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
答案 0 :(得分:1)
提供的起始变量为var1
和var2
:
read var3 foo var4 bar <<< "${var1} ${var2}"
OR
var3=${var1% *}; var4=${var2% *}
请共享echo $var3 $var4
的输出。
答案 1 :(得分:1)
将vars转换为数组并遍历数组:
a1=( $var1 )
b1=( $var2 )
for ((i=0;i<${#b1[@]}; i++)); do
echo "${b1[i]} ${a1[i]}"
done
答案 2 :(得分:0)
用换行符替换空格分隔的列表,并使用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获得实时版本。
答案 3 :(得分:0)
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