For Loop 进入 Sed 迭代器擦除整个文件

For Loop into Sed iterator wiping entire file

我可以 `sed -i 's/a/ONE/g' file.xml 没有问题,但尝试 运行 通过脚本并传递数组变量会擦除整个文件。

declare -a arr=("a" "b")
declare -a ray=("ONE" "TWO")

for i in "${!arr[@]}"
do
    sed -n -i 's/${arr[$i]}/${ray[$i]}/g' $file
done

预期输出:

我应该将 a 和 b 的所有实例分别替换为一个和两个。

就像我说的那样,我可以使用

从命令行完成此操作

sed -i 's/a/ONE/g' file.xml

什么给了?

编辑:

尝试在 sed 命令中使用双引号进行修复,但没有成功。

我能够弄清楚问题是什么,但不完全确定问题的原因。

-n“禁止自动打印模式 Space”出于某种原因破坏了该命令。如果有人知道为什么会非常感激!