リモートホストでコマンドの実行に失敗しました。

リモートホストでコマンドの実行に失敗しました。

次のように、リモートホストでいくつかのコマンドを実行しようとしています。

ssh -t -t -l user 172.20.20.20 <<EOF
  pid=$(ps -ef | grep [a]pp-management | awk '{print $2}') && kill -9 $pid && rm -rf CI/*
EOF

リモートサーバーへのログイン状態を維持し、シャットダウンが実行されない場合は、次のようになります。

user@ubuntu:~$ pid= && kill -9  && rm -rf CI/*
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

どちらもrm処刑されていませんでしたが、私は何が間違っていますか?

kill -9 コマンドに何も渡されていないことを確認しました。なぜですか?

ベストアンサー1

$区切り文書のシンボルによって導入された拡張は、コマンドに入力として渡された文字列を生成する前にローカルに評価されますssh

これを回避するには、区切り文書でコマンドをエスケープします(引用符など)。EOF

ssh ... <<"EOF"

おすすめ記事