使用sed命令shell脚本替换字符串包含空格

时间:2017-06-29 13:34:48

标签: linux bash shell sed sh

我正在尝试使用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脚本的新手。谁能告诉我原因并纠正我达到预期的结果?

1 个答案:

答案 0 :(得分:1)

引用变量,如果它们可以包含空格:

ModifyValue "$TEST_DIR" "$TEST_FILE" "$SEARCH" "$REPLACE"

否则,$ SEARCH会以碎片形式发送(在空格上拆分)并填充多个参数。