如何在 for 循环中为 2 个单独的数组使用 2 个变量?

如何在 for 循环中为 2 个单独的数组使用 2 个变量?

感谢您的帮助。我要在 Ubuntu 机器上运行一个 for 循环来查询 2 个数组:

for ((prod in "${Prod_elements[@]}";sProd in "${Prod_elements_stripped[@]}"))

上面列出的数组是在 bash 中运行 for 时创建的,不是文件

Prod_elements=("a/A" "b/B" "c/C" "d/D" )
Prod_elements_stripped=("a-A" "b-B" "c-C" "d-D")

然后

do echo "$prod" " " "$sProd"
done

所以

完整 Prod_elements=("a/A" "b/B" "c/C" "d/D" ) Prod_elements_stripped=("aA" "bB" "cC" "dD")

for ((prod in "${Prod_elements[@]}";sProd in "${Prod_elements_stripped[@]}"))
do 
echo "$prod" " " "$sProd"
done

它给出了所需的算术误差 exp 。我该怎么办呢?谢谢

答案1

如果我猜你想正确做什么,你可以使用单个关联数组而不是两个索引数组:

declare -A prod=( ["a/A"]="a-A" ["b/B"]="b-B" ["c/C"]="c-C" ["d/D"]="d-D" )
for key in "${!prod[@]}"; do
  printf "Key '%s' corresponds to value '%s'\n" "$key" "${prod[$key]}"
done

如果你必须使用您正在考虑的方法,您可以通过使用索引进行迭代来完成:

Prod_elements=("a/A" "b/B" "c/C" "d/D" )
Prod_elements_stripped=("a-A" "b-B" "c-C" "d-D")

for ((i=0; i<${#Prod_elements[@]}; i++)); do
  printf '%s %s => %s\n' "$i" "${Prod_elements[$i]}" "${Prod_elements_stripped[$i]}"
done

相关内容