বলুন আমার কাছে ইউআরএল "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
তবে এটি নিবিড় বলে মনে হচ্ছে এবং আমি আরও মার্জিত সমাধান চাই।
আমি কোনও ইউআরএল থেকে শেল স্ক্রিপ্ট চালানো সম্পর্কিত সুরক্ষা সম্পর্কিত বিষয়গুলি সম্পর্কে সচেতন, তবে আসুন এখনই সেগুলি সমস্ত উপেক্ষা করুন।
cmd <<foo বেশিরভাগ শেলগুলিতে হেরডোক সিনট্যাক্স এবং সম্ভবত আপনি যা চান তা নয়।
mktempআপনার নিজের সমাধানটি ঘূর্ণায়মান করার পরিবর্তে ব্যবহার করা উচিত