SSH'leri bir sunucuya koyduktan sonra kullanıcıdan bir dosya/klasör girmesini isteyen bir kabuk komut dosyası yazmayı deniyorum. Benim kabuk komut dosyası oldukça büyük olduğunu ve her çift tırnak kaçan olmak istemiyorum çünküSSH heredoc: bash istemi
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
Ben bu komutları yürütmek için SSH sonra çift tırnak yerine yorumlu metin kullanıyorum.
Çift tırnak kullanırken, komut istemi iyi çalıştı. Ancak, şimdi heredoc kullanıyorum, istemi artık çalışmıyor.
Heredoc ile çalışma komutunu almak için ne yapabilirim? Ve eğer, benim komut düzeni herhangi bir yolu yoktur, böylece istemi yapar çift tırnak şeyi sarma ve böylece gibi kaçan olmadan çalışma:
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'" ile değiştirmek beni sadece SSH sunucusunun içindeki bash komutuna götürür. Aslında 'istemi' ile kastettiğim şey şudur: '-e -p oku' Dosyaya giden yolu girin: "FILEPATH" - komut dosyası kullanıcıyı bir dosya için yönlendirmelidir. –
Başlangıçta tek tırnak kullanıyordum, ancak SSH komutundan önce tanımlanmış olan "$ CLIENT" gibi değişkenlere erişemiyorum. –
Tek tırnak kaçışını kaldırma hakkında bir öneri eklendi. çirkin, ama senin için çalışıyor mu merak ediyorum? – Faiz