मैं Uni में लिनक्स और शेल स्क्रिप्ट कोर्स में इंट्रो ले रहा हूं।
मुझे एक ऐसा कथन बनाने की आवश्यकता है जो नियंत्रित करता है यदि केवल 2 तर्क हैं और फिर उन लोगों को लिखें और यदि चेतावनी स्ट्रिंग वापस नहीं करते हैं
#!/bin/bash
echo "Please input two variables: "
read var
if var = " "; then
echo var
else
echo "More or less than two arguments"
fi
अभी तक मेरे पास इतना ही है। मैंने सोचा कि अगर मैं स्ट्रिंग में जगह के लिए स्टेटमेंट देखो बना सकता हूं।
यह StackExchange पर यहाँ मेरी पहली पोस्ट है। तो बाहर सभी साथी StackExchangers के लिए नमस्ते: =)
उत्तर:
जवाब के लिए 0 № 1आप जो कर सकते हैं वह बनाएं सरणी अपने इनपुट से बाहर और फिर इसकी लंबाई जांचें।
#!/bin/bash
echo "Please input two variables: "
read var
myArray=($var)
if [ ${#myArray[@]} -eq 2 ];
then
echo ${myArray[*]}
else
echo "More or less than two arguments"
fi
बैश सरणियों में मान रिक्त स्थान द्वारा अलग किए जाते हैं, इसलिए var
विस्तारित हो जाता है प्रत्येक शब्द एक नए सरणी इंडेक्स के रूप में बनाया जाता है।
जवाब के लिए 0 № 2
आप उपयोग कर सकते हैं $#
चर की मात्रा की जांच करने के लिए एक स्क्रिप्ट को कहा जाता है फिर उपयोग करें $1
तथा $2
चरों को गूंजने के लिए।
if [ $# -eq 2 ]
then
echo "$1 $2"
fi
जवाब के लिए 0 № 3
मानक इनपुट से दो पंक्तियाँ पढ़ने और यह जाँचने के लिए कि वे खाली नहीं हैं, आप निम्नलिखित का उपयोग कर सकते हैं:
#!/bin/bash
echo "Please input two variables: "
read var1
read var2
if [ -n "$var1" -a -n "$var2" ]; then
echo $var1
echo $var2
else
echo "More or less than two arguments"
fi
मैंने एक नया चर जोड़ने के लिए आपकी स्क्रिप्ट को संशोधित किया है (var2
) और नाम बदल दिया var
सेवा मेरे var1
.
फिर if
यह जांचने के लिए संशोधित किया गया है कि दोनों चर साथ खाली नहीं हैं -n
का स्विच test
(प्रकार help test
उस पर अधिक जानकारी प्राप्त करने के लिए शेल पर)। आज्ञा के बदले test
, मैंने अधिक प्रोग्रामर के अनुकूल उपयोग किया है [
, जो वैसा ही करता है test
, लेकिन एक अंत की जरूरत है ]
.
जवाब के लिए 0 № 4
इनपुट लेने के लिए कमांड चलने के बाद इंतजार करने के बजाय, बस कमांड-लाइन तर्क स्वीकार करें। आपकी स्क्रिप्ट इस तरह दिखाई देगी:
if (( $# != 2 )); then
echo "Need exactly two arguments"
exit 1
fi
# Use $1 and $2 as needed
फिर अपनी स्क्रिप्ट के साथ कॉल करें
myscript hello world