【发布时间】:2021-08-23 20:35:33
【问题描述】:
我有一个场景,我用 array_2 [index] 值检查了 array_1 [index] 值。
我下面的代码就像一个魅力,但有什么不同的方法可以达到同样的效果吗?
我正在寻找一种独特的方式来处理 2 个数组列表值并进行比较, 只需几行代码。
我的代码:
#!/bin/bash
array_1=(4 4 3)
array_2=(4 1 3)
i=''
j=''
count=0
for i in "${array_1[@]}"
do
i="cmd ${array_1[$count]}"
j="cmd ${array_2[$count]}"
if [ "$i" -eq "$j" ]
then
echo "${array_1[$count]} match with ${array_2[$count]}"
count=$(( count + 1 ))
else
echo "${array_1[$count]} does not match with ${array_2[$count]}"
exit 1
fi
done
注意:用shellcheck.net检查代码,没有发现错误。
如果两个数组有不同的值,下面是输出:
array_1=(4 4 3)
array_2=(4 1 3)
输出:
4 match with 4
4 does not match with 1
如果两个数组的值相同,则输出如下:
array_1=(4 4 3)
array_2=(4 4 3)
输出:
4 match with 4
4 match with 4
3 match with 3
【问题讨论】:
-
你应该用你实际使用的 shell 来标记你的问题,而不仅仅是
shell,因为不同的 shell 有非常不同的做事方式。 -
为什么你有
i="cmd ${array_1[$count]}"而不是i="${array_1[$count]}"?
标签: bash shell unix awk text-processing