SSHのサーバにシェルスクリプトを書き込もうとしているときに、ファイル/フォルダの入力を求めるプロンプトが表示されます。SSH heredoc:bash prompt
ssh $SERVER <<EOF
cd downloads/
read -e -p "Enter the path to the file: " FILEPATH
echo $FILEPATH
eval FILEPATH="$FILEPATH"
echo "Downloading $FILEPATH to $CLIENT"
EOF
私のシェルスクリプトがかなり大きく、私はすべて二重引用符をエスケープしたくないので、私はこれらのコマンドを実行するためにSSH後にヒアドキュメントの代わりに、二重引用符を使用しています。
二重引用符を使用していたときに、プロンプトが正常に機能しました。しかし、私はheredocを使用しているので、プロンプトはもはや機能しません。
heredocで作業するためのプロンプトを表示するにはどうすればよいですか?これは、ホスト作品上のタブ補完を働く
ssh $SERVER "
cd downloads/
read -e -p \"Enter the path to the file: \" FILEPATH
echo $FILEPATH
eval FILEPATH=\"$FILEPATH\"
echo \"Downloading $FILEPATH to $CLIENT\"
exit
"
'<< 'EOF''に変更すると、SSHサーバーの内部のbashプロンプトに移動します。私が実際に 'プロンプト'としたのは、 'read -e -p 'というファイルへのパスを入力します:" FILEPATH' - スクリプトはユーザにファイルを要求するはずです。 –
私は最初に一重引用符を使用していましたが、SSHコマンドの前に定義された '$ CLIENT'などの変数にはアクセスできません。 –
単一引用符のエスケープに関する提案を追加しました。醜いですが、それがあなたのために働くのだろうか? – Faiz