![コマンドの出力をsedに渡す方法](https://rvso.com/image/1419622/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E5%87%BA%E5%8A%9B%E3%82%92sed%E3%81%AB%E6%B8%A1%E3%81%99%E6%96%B9%E6%B3%95.png)
私のsedコマンドで#設定ファイル内のキーを更新します。 変数の内容を取得しません$GETKEY 誰か助けて?
# Get key from output of the website.
GETKEY=`wget https://www.badips.com/get/key -qO - | awk {'print $9'} | cut -d ":" -f3 | cut -d "}" -f1 | sed 's/\"//g'`
if [ $? -eq 0 ]
then
# Update key in config file.
sed -i 's/^\(KEY\s*=\s*\).*$/\1$GETKEY/' Config
fi
答え1
変数は一重引用符内では置換されません。以下を使用してください。
sed -ri "s/^(KEY\\s*=\\s*).*$/\\1$GETKEY/" Config
-r
以前は括弧をエスケープする必要はなかったのですが、他のバックスラッシュは一重引用符でエスケープする必要があります。そうでない場合は、引用符を混在させることができます。
sed -ri 's/^(KEY\s*=\s*).*$/\1'"$GETKEY/" Config