我正在尝试使用sed命令替换xml文件中的字符串。我的脚本包含以下代码。
SEARCH='key="identifierA" value ="000000 00:00:00"'
REPLACE='key="identifierA" value ="101617 00:00:00"'
TEST_DIR=home/test/
TEST_FILE="test.xml"
ChangeXml(){
ModifyValue $TEST_DIR $TEST_FILE $SEARCH $REPLACE
}
ModifyValue (){
cd $1
echo "Search : $3 Replace : $4 "
sed -i "s/$3/$4/g" $2
}
#Actions performed
ChangeXml
但echo中的#3返回 identifierA ,$ 4返回 000000 00:00:00 。它应该给出分配给这些变量的值。由于这种替换不能按预期工作。试图逃离 key =" identifierA"之间的空间。 value =" 000000 00:00:00" 。但没有得到结果。我是shell脚本的新手。谁能告诉我原因并纠正我达到预期的结果?
答案 0 :(得分:1)
引用变量,如果它们可以包含空格:
ModifyValue "$TEST_DIR" "$TEST_FILE" "$SEARCH" "$REPLACE"
否则,$ SEARCH会以碎片形式发送(在空格上拆分)并填充多个参数。