1

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"

これはうまくいきます!どうもありがとう!

ありがとう。

4

1 に答える 1