आप उल्लेख नहीं करते हैं कि आप किस शेल का उपयोग करने की योजना बना रहे हैं, इसलिए मैं बैश मानूंगा, हालांकि ये गोले भर में मानक चीजें हैं।
फ़ाइल तर्क
तर्क चर के माध्यम से पहुँचा जा सकता है $1
- $n
( $0
प्रोग्राम को चलाने के लिए प्रयुक्त कमांड देता है)। कहो कि मेरे पास एक स्क्रिप्ट है जो सिर्फ cat
उन दोनों के बीच एक सीमांकक के साथ एन फाइलों की संख्या है:
#!/usr/bin/env bash
#
# Parameters:
# 1: string delimiter between arguments 2-n
# 2-n: file(s) to cat out
for arg in ${@:2} # $@ is the array of arguments, ${@:2} slices it starting at 2.
do
cat $arg
echo $1
done
इस मामले में, हम बिल्ली के लिए एक फ़ाइल नाम दे रहे हैं। हालाँकि, यदि आप फ़ाइल में डेटा बदलना चाहते हैं (बिना स्पष्ट रूप से लिखे और इसे फिर से लिखना), तो आप फ़ाइल सामग्री को एक चर में संग्रहीत कर सकते हैं:
file_contents=$(cat $filename)
[...do some stuff...]
echo $file_contents >> $new_filename
स्टडिन से पढ़ें
जहाँ तक स्टड से पढ़ने की बात है, ज्यादातर गोले में एक मानक स्तर का निर्माण होता है read
, हालांकि इस बात में मतभेद हैं कि संकेतों को कैसे निर्दिष्ट किया जाता है (बहुत कम से कम)।
बैश builtins आदमी पेज की एक बहुत संक्षिप्त व्याख्या है read
, लेकिन मैं पसंद करते हैं बैश हैकर्स पेज।
सीधे शब्दों में:
read var_name
एकाधिक चर
एकाधिक चर सेट करने के लिए, बस कई पैरामीटर नाम प्रदान करें read
:
read var1 var2 var3
read
तब प्रत्येक चर में एक शब्द स्टड से, शेष सभी शब्दों को अंतिम चर में डंप कर देगा।
λ read var1 var2 var3
thing1 thing2 thing3 thing4 thing5
λ echo $var1; echo $var2; echo $var3
thing1
thing2
thing3 thing4 thing5
यदि चर की तुलना में कम शब्द दर्ज किए जाते हैं, तो बचे हुए चर खाली हो जाएंगे (भले ही पहले सेट हो):
λ read var1 var2 var3
thing1 thing2
λ echo $var1; echo $var2; echo $var3
thing1
thing2
# Empty line
संकेतों
मैं -p
अक्सर एक संकेत के लिए ध्वज का उपयोग करता हूं :
read -p "Enter filename: " filename
नोट: ZSH और KSH (और शायद अन्य) संकेतों के लिए एक अलग वाक्यविन्यास का उपयोग करते हैं:
read "filename?Enter filename: " # Everything following the '?' is the prompt
डिफ़ॉल्ट मान
यह वास्तव में एक read
चाल नहीं है, लेकिन मैं इसके साथ संयोजन के रूप में उपयोग करता हूं read
। उदाहरण के लिए:
read -p "Y/[N]: " reply
reply=${reply:-N}
मूल रूप से, यदि चर (उत्तर) मौजूद है, तो स्वयं वापस लौटें, लेकिन यदि रिक्त है, तो निम्न पैरामीटर ("एन") लौटाएं।