【问题标题】:Using bash to get Two variables in for-loop form two different lists使用bash获取for循环中的两个变量形成两个不同的列表
【发布时间】:2021-09-22 07:03:52
【问题描述】:

我正在使用 bash,我有两个列表:

  • AZU SJI IOP
  • A1 B1 C1

使用下面的 bash 代码:

for f1 in AZU SJI IOP
do
    for f2 in A1 B1 C1
    do
        echo $f1 + $f2
    done
done

我得到这个结果:

$ bash dir.sh
AZU + A1
AZU + B1
AZU + C1
SJI + A1
SJI + B1
SJI + C1
IOP + A1
IOP + B1
IOP + C1

我想这样得到结果

AZU A1

SJI B1

IOP C1

【问题讨论】:

  • 来自How do I ask a good question?:“请勿发布代码、数据、错误消息等的图片 - 将文本复制或输入到问题中"
  • 你想要三个结果行,所以不要使用两个嵌套的 for 循环,否则你会得到 3*3=9。使用一个 for 循环迭代 0 到 2,然后使用该数字来索引两个列表。此外,您已经看到 + 不是连接运算符,并且会出现在输出中,所以请避免使用它。
  • 这能回答你的问题吗? zip columns from separate files together in bash

标签: bash loops for-loop


【解决方案1】:

定义两个数组,使它们具有相同的索引,然后遍历一个数组的索引:

list1=(AZU SJI IOP)
list2=(A1 B1 C1)

for i in "${!list1[@]}"; do
  echo "${list1[i]} ${list2[i]}"
done

【讨论】:

    【解决方案2】:

    您当然可以使用paste,但由于您的列表不在文件中,您可能对没有外部命令的解决方案感兴趣:

    set -- A1 B1 C1
    for f1 in AZU SJI IOP
    do  echo $f1 $1
        shift
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2018-10-28
      • 2021-12-20
      • 2016-10-31
      • 1970-01-01
      • 2014-06-21
      • 2011-12-08
      相关资源
      最近更新 更多