我正在尝试使用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


但是回显中的此#3返回标识符A,$ 4返回000000 00:00:00。它应该给出分配给这些变量的值。由于这个原因,替换无法正常工作。试图逸出key =“ identifierA”值=“ 000000 00:00:00”之间的空格。但是没有得到结果。我对Shell脚本非常陌生。谁能告诉我原因并纠正我以达到预期的结果?

最佳答案

如果变量可以包含空格,请用引号引起来:

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


否则,$ SEARCH将分块发送(在空白处分割),并填充多个参数。

关于linux - 使用sed命令shell脚本替换包含空格的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44826655/

10-15 02:19