Ja próbuje napisać skrypt, który SSHs na serwerze, a następnie pyta użytkownika, aby wprowadzić plik/folder.SSH heredoc: bash szybka
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
Używam heredoc zamiast cudzysłów po SSH na wykonanie tych poleceń, bo mój skrypt jest dość duży, a ja nie chcę być ucieczką każdy podwójny cudzysłów.
Kiedy używałem cudzysłowów, monit działało. Jednak teraz, gdy używam heredoc, zachęta przestaje działać.
Co mogę zrobić, aby dostać się monit, aby pracować z heredoc? A jeśli nie, czy jest jakiś sposób, że układ mój skrypt tak, że szybka praca bez owijania robi wszystko, co w cudzysłowach i ucieczki, tak jak poniżej:
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
"
Zmiana na '<< 'EOF'' powoduje przejście do podpowiedzi bash w serwerze SSH. To, co właściwie miałem na myśli przez "prompt", to: 'read -e -p" Podaj ścieżkę do pliku: "FILEPATH" - skrypt powinien monitować użytkownika o plik. –
Początkowo używałem pojedynczych cudzysłowów, ale potem nie mam dostępu do zmiennych takich jak '$ CLIENT', które zostały zdefiniowane przed poleceniem SSH. –
Dodano sugestię dotyczącą unikania pojedynczych cudzysłowów. brzydki, ale zastanawiam się, czy to działa dla ciebie? – Faiz