ऐसा करने का एक वैकल्पिक तरीका यह होगा कि आप अपनी फ़ाइल में सिर्फ मानक इनपुट को पुनर्निर्देशित करें, जहाँ आपके पास प्रोग्राम द्वारा अपेक्षित उपयोगकर्ता इनपुट है। उदाहरण के लिए, कार्यक्रम के साथ (बुलाया script.sh)
#!/bin/bash
echo "Enter your name:"
read name
echo "...and now your age:"
read age
# example of how to use the values now stored in variables $name and $age
echo "Hello $name. You're $age years old, right?"
और इनपुट फ़ाइल (कहा जाता है input.in)
Tomas
26
आप इसे टर्मिनल से निम्नलिखित दो तरीकों से चला सकते हैं:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
और यह केवल स्क्रिप्ट चलाने और डेटा को मैन्युअल रूप से दर्ज करने के बराबर होगा - यह लाइन "हैलो टॉमस" को प्रिंट करेगा। आप 26 साल के हैं, ठीक है? "।
जैसा कि राडू रियडेनु ने पहले ही सुझाव दिया है , आप catअपनी स्क्रिप्ट के अंदर एक फ़ाइल की सामग्री को एक अवतरण में पढ़ने के लिए उपयोग कर सकते हैं - उस स्थिति में, आपको प्रत्येक फ़ाइल को केवल एक पंक्ति में शामिल करने की आवश्यकता होती है, केवल उस विशिष्ट चर के लिए इच्छित मान के साथ। उपरोक्त उदाहरण में, आप इनपुट फ़ाइल को नाम के साथ एक में विभाजित करेंगे (कहते हैं, name.in) और एक के साथ उम्र (कहते हैं, age.in), read nameऔर read ageलाइनों को name=$(cat name.in) और age=$(cat age.in)क्रमशः और बदल दें ।
KEY=VALUEजोड़े हैं? समाधान काफी अलग हैं (यह यदि मान बाद Takkat का जवाब लागू होता है, पूर्व राडू के)