【发布时间】:2019-10-18 14:14:58
【问题描述】:
我有两组参数:a = "5 7 1" 和 b = "dogs cats horse"
它们应该成对出现:5 匹配 dogs、7 匹配 cats 和 1 匹配 horse
他们也应该在一行中做到这一点:
I have 5 whatever dogs whatever whatever
I have 7 whatever cats whatever whatever
I have 1 whatever horse whatever whatever
问题是$a 和$b 可以有数百个参数,所以写很多行像上面的行并不是一个真正的选择。
我发现类似以下的东西可以完成这项工作:
a = "5 7 1"
b = "dogs cats horse"
set -- $a
for i in $b; do
echo "I have $i whatever $1 whatever whatever"
shift 1
done
但我想知道是否还有其他选择。
基本上,当我们只有 3 对时,很容易在脚本中知道来自 $a 的哪些值对应于 $b 的哪些值。现在想象在这两个集合中有 200 个值,您必须更改 $b 的值,其中 $a 的值是 50 和 157。当然这只是一个例子——任何值都可以随时间改变。那么有没有更好的方法来映射5:dogs、7:cats 和1:cats 之类的值?这样,如果狗的数量变为 4,我可以很容易地找到要更改的内容。
【问题讨论】: