शेल में $ # का क्या अर्थ है?


25

$#शेल में क्या मतलब है?

मेरे पास कोड है जैसे

if [ $# -eq 0 ]
then

मैं समझना चाहता हूं कि $#इसका क्या मतलब है, लेकिन इस प्रकार की चीजों को खोजने के लिए Google खोज बहुत खराब है।


3
विराम चिह्नों वाली खोजों के लिए, मैं symbolhound.com का उपयोग करना पसंद करता हूं। आमतौर पर मुझे जो चाहिए वो मिल जाता है।
एरिक एंड्रेस


बेहतर संदर्भ और एसईओ के लिए: धमाके, संख्या संकेत , तेज, U + 0023, & # 35 ;, टिप्पणी साइन और डॉलर!
क्लेमेंट

जवाबों:


37

आप हमेशा अपने शेल का मैन पेज देख सकते हैं। man bashकहते हैं:

Special Parameters
   #      Expands to the number of positional parameters in decimal.

इसलिए एक शेल स्क्रिप्ट यह जाँच सकती है कि कोड के साथ कितने पैरामीटर दिए गए हैं:

if [ "$#" -eq 0 ]; then
  echo "you did not pass any parameter"
fi

@NoName आप खुद manसहित लगभग कुछ भी कर सकते हैं manaproposकुछ समय का प्रयास भी करें ।
एक CVn

@NoName आप तब भी कर सकते हैं, जब कोई GNU टूल्स (linux, etc) के साथ OS का उपयोग करते हुए infoया तो मैन पेज के लिए उपयोग करता है , या पैकेज को जोड़ देता है (बहुत अलग, और कंपार्टमेंटलाइज़्ड) अगर पैकेज में कुछ है
Olivier Nulac

12

वास्तव में,

`$` refer to `value of` and
`#` refer to `number of / total number`

तो एक साथ

`$#` refer to `The value of the total number of command line arguments passed.`

इस प्रकार, आप उपयोग किए $#गए तर्कों / मापदंडों की संख्या की जांच करने के लिए उपयोग कर सकते हैं जैसे आपने किया था और किसी भी अप्रत्याशित स्थितियों को संभाल सकते हैं।

इसी तरह, हमारे पास है

`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`

आदि।


8

अर्थात्

  1. पैरामीटर की संख्या जिसके साथ स्क्रिप्ट को बुलाया गया है

  2. उन मापदंडों की संख्या जो स्क्रिप्ट द्वारा निर्धारित की गई हैं set -- foo bar

  3. (जब एक फ़ंक्शन के भीतर उपयोग किया जाता है) मापदंडों की संख्या जिसके साथ एक फ़ंक्शन कहा जाता है ( setवहां भी काम करेगा)।

इसे ब्लॉक मैन पेज में "स्पेशल पैरामीटर्स" में समझाया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.