我编写了一些脚本,用于从数组中抓取字符串并将其重播到文件中。这里的问题是特殊字符不会通过。有什么想法吗?
#!/bin/bash/
NewParameters=(
scservice.memberServiceEndpoint="http://mywebhere.com"
scservice.memberServiceConpoint="http://example.com"
play.modules.disabled += "play.data.format.FormattersModule"
)
file=/home/conf.conf
for i in "${NewParameters[@]}"
do
before=$(printf "%s\n" $i | awk -F'=' '{print $1}')
after=$(printf "%s\n" $i | awk -F'=' '{print $2}')
sed -i "s@$before=.*@$before=$after@g" $file
done
输出结果:
scservice.memberServiceEndpoint=http://mywebhere.com
scservice.memberServiceConpoint=http://example.com
play.modules.disabled += play.data.format.FormattersModule
答案1
在“引号删除”阶段,shell 会在赋值时删除引号(man bash
有关详细信息,请参阅)。用反斜杠标记双引号,或用单引号标记整个元素。此外,NewParameters 中的最后一行实际上是用空格分隔的三个元素;同样,如果您想将所有内容放在一个元素中,请用反斜杠标记空格或将整行括在单引号中。