在循环期间访问 KV 对中的值



我有一个关联数组,其中键和值都是xml字符串。我正在使用它进行 bash 脚本中的查找/替换操作。

#!/usr/local/bin/bash
declare -A findReplace
findReplace['<item name="Alice" title="President"/>']='<item name Bob title="CEO"/>'
for e in "${findReplace[@]}"; do
find="$e"
replace="${findReplace[$e]}"
printf "tSearching for: ${find}n"
printf "tReplacing with: "${replace}"n"
done

这是这个的输出:

Searching for: <item name Bob title="CEO"/>
Replacing with:

查看值如何无法正确读取?我尝试使用索引进行迭代并使用该索引来拉入两者,但是键和值都只读取到空间。

希望这是清楚的。谢谢。

添加!以迭代数组的键而不是其值。此外,避免将变量直接替换为 printf 的格式字符串。使用%s并将变量作为单独的参数传递。

for e in "${!findReplace[@]}"; do
find="$e"
replace="${findReplace[$e]}"
printf 'tSearching for: %sn' "${find}"
printf 'tReplacing with: %sn' "${replace}"
done

最新更新