Dockerコンテナの31行目のファイルに変数を作成する必要があります。私はbashスクリプトを使用します
私のコマンドは次のとおりです。
txt="
log-bin
server_id=1"
docker exec $container sed -i "31i\
$txt /etc/mysql/my.cnf
次のエラーが発生します。
sed: -e expression #1, char 8: extra characters after command
私のファイルに何も追加されていません...
助けてください?
答え1
私はドッカーコンテナについて何も知りませんが、特定の行の前に変数の内容を挿入したい場合は、次のGNU sedコマンドを使用できます。
VAR="$txt" sed -i.bk '31{h;s:.*:printf "%s" "$VAR":e;G}' /etc/mysql/my.cnf
安全上の理由から、上記のコマンドは拡張子です.bk
。
答え2
答えてくれてありがとう。うまくいきません。
実際には空行を挿入します。
私が使用しようとすると
VAR="$txt"
sed -i.bk '31{h;s:.*:printf "%s" "hello world":e;G}' /etc/mysql/my.cnf
効果がある
私が使用しようとすると
VAR="$txt"
sed -i.bk '31{h;s:.*:printf "%s" "$VAR":e;G}' /etc/mysql/my.cnf
空の行が新しくなりました...
答え3
ちょっと待って、それは単に「そして」の問題です。
これは正しい構文です
VAR="$txt"
docker exec $container sed -i.bk "31{h;s:.*:printf '%s' '$VAR':e;G}" $path
sedコマンドは二重引用符「」で囲む必要があり、実際のパラメータは一重引用符「」で囲む必要があります。
すべてのパートナーに感謝します