SSH を使用して複数のコマンドを実行しようとしていますが、構文が正しくありません。誰か助けてくれませんか?
ssh "$USER"@"$IP" " \
CURRENT_HOSTNAME=$(hostname); \
sed -c -i 's/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/' $DISTRO_FILE; \
sed -c -i 's/$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/' $CONFIG_FILE; \
hostname $REPLACEMENT_VALUE"
これらのコマンドは、ローカルで実行すると正常に動作しますが、SSH 経由で実行しようとすると次のエラーが発生します。
sed: -e expression #1, char 0: no previous regular expression
エラーが発生したようです
sed -c -i 's/$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/' $CONFIG_FILE; \
SSH自体で以前に設定された$CURRENT_HOSTNAMEを読み込もうとしているからです。その変数を読み返す方法がわかりません。手がかりはありますか?
コードを編集しました:
ssh "$USER"@"$IP" "CURRENT_HOSTNAME=\$(hostname);
sed -c -i \"s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/\" $DISTRO_FILE;
sed -c -i \"s/\$CURRENT_HOSTNAME/$REPLACEMENT_VALUE/\" $CONFIG_FILE;
hostname $REPLACEMENT_VALUE"
これはうまくいきます!どうもありがとう!
ありがとう。