मैं एक शेल स्क्रिप्ट लिखने का प्रयास कर रहा हूं जो सर्वर में एसएसएच करता है और फिर उपयोगकर्ता को फ़ाइल/फ़ोल्डर में प्रवेश करने के लिए संकेत देता है।एसएसएच हेरेडोक: बैश प्रॉम्प्ट
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 के बाद बजाय हियरडॉक उपयोग कर रहा हूँ डबल कोट्स के इन आदेश पर अमल करने के लिए क्योंकि मेरी खोल स्क्रिप्ट नहीं बल्कि बड़ी है और मैं हर दोहरे उद्धरण से बचने जा करने के लिए नहीं करना चाहती।
जब मैं डबल कोट्स का उपयोग कर रहा था, तो प्रॉम्प्ट ठीक काम करता था। हालांकि, अब मैं हेरेडोक का उपयोग कर रहा हूं, प्रॉम्प्ट अब काम नहीं करता है।
हेरेडोक के साथ काम करने के लिए संकेत प्राप्त करने के लिए मैं क्या कर सकता हूं? और अगर नहीं, वहाँ किसी भी तरह से मैं अपने स्क्रिप्ट लेआउट है ताकि शीघ्र करता दोहरे उद्धरण में सब कुछ लपेटकर और भागने, इसलिए की तरह बिना काम:
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'' में बदलना मुझे एसएसएच सर्वर के अंदर बैश प्रॉम्प्ट पर ले जाता है। वास्तव में 'प्रॉम्प्ट' से मेरा क्या मतलब है: 'read -e -p" फ़ाइल के पथ को दर्ज करें: "FILEPATH' - स्क्रिप्ट को उपयोगकर्ता को फ़ाइल के लिए संकेत देना चाहिए। –
मैं शुरुआत में सिंगल कोट्स का उपयोग कर रहा था, लेकिन फिर मैं '$ CLIENT'' जैसे चरों तक नहीं पहुंच सकता, जिसे एसएसएच कमांड से पहले परिभाषित किया गया था। –
एकल उद्धरण एकल उद्धरण के बारे में एक सुझाव जोड़ा गया। बदसूरत, लेकिन आश्चर्य है कि यह आपके लिए काम करता है? – Faiz