मान लें कि मेरे पास URL "http://mywebsite.com/myscript.txt" है जिसमें एक स्क्रिप्ट है:
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"
और मैं इस स्क्रिप्ट को बिना किसी फ़ाइल में सहेजे इसे चलाना चाहता हूँ। मैं यह कैसे करु?
अब, मैंने सिंटैक्स देखा है:
bash < <(curl -s http://mywebsite.com/myscript.txt)
लेकिन यह ऐसा काम नहीं करता है जैसे अगर मैं किसी फ़ाइल में सहेजता और फिर निष्पादित होता। उदाहरण के लिए रीडलाइन काम नहीं करती है, और आउटपुट सिर्फ:
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!
इसी तरह, मैंने कोशिश की है:
curl -s http://mywebsite.com/myscript.txt | bash -s --
उसी परिणाम के साथ।
मूल रूप से मेरे पास एक समाधान था:
timestamp=`date +%Y%m%d%H%M%S`
curl -s http://mywebsite.com/myscript.txt -o /tmp/.myscript.${timestamp}.tmp
bash /tmp/.myscript.${timestamp}.tmp
rm -f /tmp/.myscript.${timestamp}.tmp
लेकिन यह मैला लगता है, और मैं एक और अधिक सुंदर समाधान चाहते हैं।
मुझे URL से शेल स्क्रिप्ट चलाने के बारे में सुरक्षा के मुद्दों के बारे में पता है, लेकिन चलो अभी के लिए उस सब को अनदेखा कर दें।
cmd <<foo
अधिकांश गोले में हेरेडोक सिंटैक्स है और शायद आप जो चाहते हैं वह नहीं है।
mktemp
अपने स्वयं के समाधान को रोल करने के बजाय उपयोग करना चाहिए