2017-06-29 11 views
-1

sedコマンドを使用してxmlファイル内の文字列を置き換えようとしています。私のスクリプトには次のコードが含まれています。エコーで文字列を置換するには、sedコマンドシェルスクリプトを使用して空白が含まれています

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位4つの戻り000000 0時00分00秒identifierAを返し、$。代わりにそれらの変数に割り当てられた値を与えるはずです。このため、置換は期待どおりには機能しません。 の間のスペースをエスケープしようとしました。key = "identifierA" value = "000000 00:00:00"。しかし結果は得られません。私はシェルスクリプトの新機能です。誰も私に理由を教えて、期待される結果を達成するために私を修正することはできますか?彼らは空白を含めることができる場合

答えて

1

は、変数を引用:

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

そうでない場合は、$検索は作品(空白で分割)に送信され、複数の引数を移入しています。

+0

こんにちは、それは完全に働いた。 sedを使用してより良い解決策がありますか? –

+0

「より良い」とはどういう意味ですか?それは完璧に働いて、どのように完璧に機能するのでしょうか? – choroba

+0

申し訳ありません。私が意味したのは、私が弦を置き換える方法でした。 –

関連する問題