我试图编写一个Shell脚本,该脚本通过SSH连接到服务器,并提示用户输入文件/文件夹。
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而不是双引号来执行这些命令,因为我的Shell脚本非常大,我不想转义每个双引号。
在使用双引号时,提示符工作得很好。然而,现在我正在使用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
-脚本应提示用户选择文件。 - user1082754\$varname
转义远程(服务器端)变量。 - Faiz