2つの変数を割り当てましたが更新できません
x=$(cat /scratch/env.properties | grep ConfigPath)
y=$(ConfigPath=/scratch/a/b)
次に sed は env.properties の ConfigPath を置き換えます。
sed 's/$x/$y/' env.properties
$ yで指定されたenv.propertiesのConfigPathは更新されません。
答え1
まず、十分ではありませcat
んgrep
。
x="$(grep ConfigPath /scratch/env.properties)"
第二に、私はこれがあなたが望むミッションではないと思います。
y=$(ConfigPath=/scratch/a/b)
変数に文字列y
を入れるには、ConfigPath=/scratch/a/b
次のようにする必要があります。
y="ConfigPath=/scratch/a/b"
$(...)
はBashのコマンドの置き換え。
sed
第三に、シェル拡張を引き起こすには、コマンドに二重引用符を使用する必要がありますx
。y
sed "s/$x/$y/" env.properties
また、/
これは区切り文字であるため、Unixパスを使用するときの悪い選択です。カンマなどの他の文字を使用してください。
sed "s,$x,$y," env.properties
ユーザーが指摘したように
先行は達成するのが難しい
以下のコメントで、行の先頭にsed
あることを確認して使用すると、ConfigPath
これをより簡単でより良くすることができます。
sed "s,^ConfigPath=.*$,ConfigPath=/scratch/a/b," env.properties