sedコマンドで変数を更新できません

sedコマンドで変数を更新できません

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

まず、十分ではありませcatgrep

x="$(grep ConfigPath /scratch/env.properties)"

第二に、私はこれがあなたが望むミッションではないと思います。

y=$(ConfigPath=/scratch/a/b)

変数に文字列yを入れるには、ConfigPath=/scratch/a/b次のようにする必要があります。

y="ConfigPath=/scratch/a/b"

$(...)Bashのコマンドの置き換え

sed第三に、シェル拡張を引き起こすには、コマンドに二重引用符を使用する必要がありますxy

sed "s/$x/$y/" env.properties

また、/これは区切り文字であるため、Unixパスを使用するときの悪い選択です。カンマなどの他の文字を使用してください。

sed "s,$x,$y," env.properties

ユーザーが指摘したように 先行は達成するのが難しい 以下のコメントで、行の先頭にsedあることを確認して使用すると、ConfigPathこれをより簡単でより良くすることができます。

sed "s,^ConfigPath=.*$,ConfigPath=/scratch/a/b," env.properties

おすすめ記事