यदि आप $*
खाली हैं तो आप कैसे जांच करेंगे ? दूसरे शब्दों में, यह कैसे जांचा जाए कि क्या कमांड के लिए कोई तर्क प्रदान नहीं किए गए थे?
यदि आप $*
खाली हैं तो आप कैसे जांच करेंगे ? दूसरे शब्दों में, यह कैसे जांचा जाए कि क्या कमांड के लिए कोई तर्क प्रदान नहीं किए गए थे?
जवाबों:
यह जांचने के लिए कि क्या कमांड के लिए कोई तर्क नहीं दिए गए हैं, $#
चर का मान चेक करें ,
if [ $# -eq 0 ]; then
echo "No arguments provided"
exit 1
fi
यदि आप उपयोग करना चाहते हैं $*
( बेहतर नहीं ) तो,
if [ "$*" == "" ]; then
echo "No arguments provided"
exit 1
fi
कुछ स्पष्टीकरण:
दूसरा दृष्टिकोण बेहतर नहीं है क्योंकि स्थितीय पैरामीटर विस्तार में *
एक से शुरू होकर स्थितीय मापदंडों तक फैला हुआ है। जब विस्तार दोहरे उद्धरण चिह्नों के भीतर होता है, तो यह IFS विशेष चर के पहले चरित्र द्वारा अलग किए गए प्रत्येक पैरामीटर के मूल्य के साथ एक शब्द तक फैलता है। इसका मतलब है कि एक स्ट्रिंग का निर्माण किया जाता है। इसलिए अतिरिक्त उपरि है।
दूसरी ओर #
स्थितीय मापदंडों की संख्या तक फैलता है।
उदाहरण:
$ command param1 param2
यहाँ,
का मूल्य $#
2 और मूल्य की $*
स्ट्रिंग "param1 param2" है (उद्धरण के बिना), अगर आईएफएस सेट नहीं की जाती। क्योंकि अगर IFS परेशान है, तो पैरामीटर रिक्त स्थान से अलग हो जाते हैं
अधिक विवरण man bash
और विशेष पैरामीटर नाम के विषय को पढ़ने के लिए
[ $# -eq 0 ]
सबसे सामान्य रूप IME है। ऐसे किनारे मामले हैं जहां "$#"
खाली हो सकते हैं: यदि कोई एकल तर्क है जो खाली है, या यदि कई खाली तर्क हैं और $IFS
खाली है।
"$*"
अभिव्यक्ति भी करने के लिए मूल्यांकन करेंगे ""
, तो केवल एक ही ""
पैरामीटर पारित किया गया था। लेकिन ज्यादातर समय आप किसी भी तरह की परवाह नहीं करेंगे।
bash
। आप sh
स्क्रिप्ट को निष्पादित करने के लिए उपयोग कर रहे हैं । AFAIK ==
केवल में मान्य है bash
।
यदि आप केवल एक विशेष तर्क याद कर रहे हैं, तो आप को रोकने में रुचि रखते हैं, पैरामीटर प्रतिस्थापन महान है:
#!/bin/bash
# usage-message.sh
: ${1?"Usage: $0 ARGUMENT"}
# Script exits here if command-line parameter absent,
#+ with following error message.
# usage-message.sh: 1: Usage: usage-message.sh ARGUMENT
यह एक ऐसा तरीका है जिससे आप जान सकते हैं कि आपके पास कोई तर्क है
NO_ARGS=0
if [ $# -eq "$NO_ARGS" ]; then
{do something}
fi
if ! (($#)); ...
, याif (($# == 0)); ...
, याif [ $# -eq 0 ]; ...
, या! (($#)) && ...
, या(($#)) || ...