2009-12-11 11 views
16

यूनिक्स खोल में सरणी लंबाई कैसे खोजें?यूनिक्स शैल में सरणी लंबाई कैसे खोजें?

+3

क्या आप थोड़ा और विशिष्ट हो सकते हैं? –

+1

आपको निश्चित रूप से अधिक विशिष्ट होने की आवश्यकता है। यदि 'यूनिक्स शैल' का मतलब बोर्न श, तो कोई सरणी नहीं है। –

उत्तर

11

मान लिया जाये कि बैश:

~> declare -a foo 
~> foo[0]="foo" 
~> foo[1]="bar" 
~> foo[2]="baz" 
~> echo ${#foo[*]} 
3 

तो, ${#ARRAY[*]} सरणी ARRAY की लंबाई के फैलता है।

+0

यह प्रश्न बहुत पुराना है लेकिन मैं जानना चाहता हूं कि सरणी की इस लंबाई को एक चर में कैसे स्टोर किया जाए? मैंने foo = $ {# foo [*]} की तरह कुछ करने की कोशिश की लेकिन खोल 'आदेश नहीं मिला' त्रुटि फेंक रहा है। – Shekhar

+0

'*' क्या है? यह '@' से अलग कैसे है? – jameshfisher

+0

@jameshfisher यह इस उपयोग में नहीं है। – unwind

30
$$ a=(1 2 3 4) 
$$ echo ${#a[@]} 
4 
+1

'@' क्या करता है? –

-3

जो लोग अभी भी एक तरह से खोज कर एक चर में एक सरणी की लंबाई डाल करने के लिए:

foo=$(echo ${'ARRAY[*]} 
5
tcsh या csh में

:

~> set a = (1 2 3 4 5) 
~> echo $#a 
5 
+0

उपरोक्त में से कोई भी मेरे लिए काम नहीं कर रहा है! यह सही काम करता है !! क्या आप अधिक जानकारी दे सकते हैं ?? – saravanakumar

1

मछली में एक की लंबाई सरणी के साथ पाया जा सकता है:

$ set a 1 2 3 4 
$ count $a 
4 
1

यह मेरे लिए अच्छी तरह से काम करता है

arglen=$# 
    argparam=$* 
    if [ $arglen -eq '3' ]; 
    then 
      echo Valid Number of arguments 
      echo "Arguments are $*" 
    else 
      echo only four arguments are allowed 
    fi 
संबंधित मुद्दे