2010-08-27 21 views
7

मैं

foo() { 
if [[ $# -lt 1 ]]; then 
    return 0 
fi 

... 

} 

देखना वास्तव में यह के रूप में यह वहाँ करता है $ # का उपयोग करके तुलना कर रहा है क्या?

उत्तर

7

$#कमांड लाइन तर्क स्क्रिप्ट को पास किया गया है।

sh-3.2$ cat a.sh 
foo() { 
     echo $# #print the number of arguments passed to the function. 
} 
foo 1 
foo 1 2 
foo 1 2 3 

sh-3.2$ ./a.sh 
1 
2 
3 
:

sh-3.2$ cat a.sh 
echo $# #print the number of cmd line args. 
sh-3.2$ ./a.sh 
0 
sh-3.2$ ./a.sh foo 
1 
sh-3.2$ ./a.sh foo bar 
2 
sh-3.2$ ./a.sh foo bar baz 
3 

जब (आपके मामले में) एक समारोह के अंदर इस्तेमाल यह कार्य करने के लिए पारित कर दिया तर्क की संख्या का प्रतिनिधित्व करता है

3

$# लिपि में दिए गए तर्कों की संख्या है। विशेष पैरामीटर्सपैरामीटर पूर्ण सूची के लिए bash(1) मैन पेज के अनुभाग का उपखंड देखें।

2

$# = फ़ंक्शन पर दिए गए तर्कों की संख्या।

आपके कोड में, फ़ंक्शन पर एक पैरामीटर कम से कम के साथ नहीं कहा जाता है, तो फ़ंक्शन 0 वापस आ जाएगा।

संबंधित मुद्दे