我正在用数组变量中的值替换文本 SUBJECT
,如下所示:
#!/bin/bash
# array of subjects, the ampersand causes a problem.
subjects=("Digital Art" "Digital Photography" "3D Modelling & Animation")
echo $subjects[2] # Subject: 3D Modelling & Animation
sed -i -e "s/SUBJECT/${subjects[2]}/g" test.svg
生成的文本不是替换文本 SUBJECT
,而是如下所示:
3D Modelling SUBJECT Animation
如何在 sed 中将 & 符号作为文字 &
并使其正确回显?
最佳答案
问题是替换文本中存在 &
。 &
使 sed
在替换中放置完全匹配的文本,因此 SUBJECT
出现在输出中。
你可以使用这个技巧:
sed -i "s/SUBJECT/${subjects[2]//&/\\&}/g" test.svg
${subjects[2]//&/\\&}
将 的第二个元素中的每个
调用 &
替换为 \&
>subjectssed
替换之前的数组。
关于bash - 使用 sed 转义字符串变量中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44374914/