मैं सही संख्या में तर्क (एक तर्क) की जांच कैसे करूं। अगर कोई सही तर्क पास किए बिना स्क्रिप्ट को लागू करने की कोशिश करता है, और यह सुनिश्चित करने के लिए जाँच करता है कि कमांड लाइन तर्क वास्तव में मौजूद है और एक निर्देशिका है।
मैं सही संख्या में तर्क (एक तर्क) की जांच कैसे करूं। अगर कोई सही तर्क पास किए बिना स्क्रिप्ट को लागू करने की कोशिश करता है, और यह सुनिश्चित करने के लिए जाँच करता है कि कमांड लाइन तर्क वास्तव में मौजूद है और एक निर्देशिका है।
जवाबों:
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
अनुवाद: यदि तर्कों की संख्या (संख्यात्मक) 1 के बराबर नहीं है या पहला तर्क निर्देशिका नहीं है, तो स्ट्रैडर का आउटपुट उपयोग और विफलता स्थिति कोड के साथ बाहर निकलना।
अधिक अनुकूल त्रुटि रिपोर्टिंग:
#!/bin/sh
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
if ! [ -e "$1" ]; then
echo "$1 not found" >&2
exit 1
fi
if ! [ -d "$1" ]; then
echo "$1 not a directory" >&2
exit 1
fi
if [ "$#" -ne 1 ] ; then
या तो यह if ! [ -d "$1" ]; then
देखने की कोशिश करें कि कौन सा क्लॉज परेशानी पैदा कर रहा है।
-d
संबंध नहीं है, वहां == का कोई निर्देशक नहीं है । यदि आप एक अलग चेक जोड़ना चाहते हैं तो आप -e
अस्तित्व के लिए जाँच कर सकते हैं ।
-e
यदि फ़ाइल मौजूद है तो सही है। मैंने जवाब देने के लिए अधिक अनुकूल त्रुटि रिपोर्टिंग जोड़ी।
बिल्ली लिपि
var1=$1
var2=$2
if [ "$#" -eq 2 ]
then
if [ -d $var1 ]
then
echo directory ${var1} exist
else
echo Directory ${var1} Does not exists
fi
if [ -d $var2 ]
then
echo directory ${var2} exist
else
echo Directory ${var2} Does not exists
fi
else
echo "Arguments are not equals to 2"
exit 1
fi
इसे नीचे की तरह निष्पादित करें -
./script.sh directory1 directory2
आउटपुट जैसा होगा -
directory1 exit
directory2 Does not exists
आप कमांड लाइन में पास किए गए तर्कों की कुल संख्या की जांच कर सकते हैं " $#
"
उदाहरण के लिए कहो मेरी शेल स्क्रिप्ट का नाम हैhello.sh
sh hello.sh hello-world
# I am passing hello-world as argument in command line which will b considered as 1 argument
if [ $# -eq 1 ]
then
echo $1
else
echo "invalid argument please pass only one argument "
fi
आउटपुट होगा hello-world
shell
का मतलब है/bin/sh