/ / शेल स्क्रिप्ट की जाँच करें कि क्या एक स्ट्रिंग में दो पैरामीटर हैं - linux, bash, shell, if-statement

शैल स्क्रिप्ट जांचें कि क्या स्ट्रिंग में दो इन-पैरामीटर हैं - लिनक्स, बैश, खोल, if-statement

मैं 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