2009-12-11 8 views

Antwort

11

Angenommen bash:

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

So dehnt ${#ARRAY[*]} auf die Länge des Arrays ARRAY.

+0

Diese Frage ist ziemlich alt, aber ich würde gerne wissen, wie Sie diese Länge des Arrays in einer Variablen speichern? Ich habe versucht, etwas wie foo = $ {# foo [*]}, aber Shell wirft "Befehl nicht gefunden" Fehler. – Shekhar

+0

Was ist '*'? Wie unterscheidet es sich von @? – jameshfisher

+0

@jameshfisher Es tut dies nicht, in dieser Verwendung. – unwind

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

Was macht '@' hier? –

-3

Für diejenigen, die immer noch einen Weg suchen, die Länge eines Arrays in eine Variable zu setzen:

foo=$(echo ${'ARRAY[*]} 
5

in tcsh oder csh:

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

Keines der oben genannten funktioniert für mich! Das funktioniert perfekt !! Könnten Sie bitte mehr Details? – saravanakumar

1

In Fisch der Länge eines Array kann gefunden werden mit:

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

das funktioniert gut für mich

arglen=$# 
    argparam=$* 
    if [ $arglen -eq '3' ]; 
    then 
      echo Valid Number of arguments 
      echo "Arguments are $*" 
    else 
      echo only four arguments are allowed 
    fi 
Verwandte Themen