2017-06-29 1176 views
-1

我想用sed命令替換xml文件中的字符串。我的腳本包含以下代碼。使用sed命令shell腳本替換字符串包含空格

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回聲返回identifierA和$ 4返回000000 00:00:00。它應該給予分配給這些變量的值。由於這個替換沒有按預期工作。試圖逃脫key =「identifierA」value =「000000 00:00:00」之間的空間。但沒有得到結果。我對shell腳本非常陌生。任何人都可以告訴我原因並糾正我達到預期的結果嗎?

回答

1

引用變量,如果他們能包含空格:

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

否則,$搜索,發送件(在空格分割),並填充多個參數。

+0

嗨,它工作完美。有沒有更好的解決方案使用sed? –

+0

「更好」是什麼意思?它工作完美,它怎麼能更完美地工作? – choroba

+0

對不起。我的意思是我更換琴絃的方式。 –