2009-12-11 7 views

Répondre

11

bash En supposant:

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

Ainsi, ${#ARRAY[*]} étend la longueur du tableau ARRAY.

+0

Cette question est assez ancienne mais j'aimerais savoir comment stocker cette longueur de tableau dans une variable? J'ai essayé quelque chose comme foo = $ {# foo [*]} mais le shell lance l'erreur 'command not found'. – Shekhar

+0

Qu'est-ce que '*'? En quoi diffère-t-il de '@'? – jameshfisher

+0

@jameshfisher Ce n'est pas le cas, dans cet usage. – unwind

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

Que fait '@' ici? –

-3

Pour ceux qui cherchent encore un moyen de mettre la longueur d'un tableau dans une variable:

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

tcsh ou csh:

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

Rien de ce qui précède fonctionne pour moi! Cela fonctionne parfaitement !! Pourriez-vous s'il vous plaît plus de détails? – saravanakumar

1

En poissons la longueur d'un tableau peut être trouvé avec:

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

cela fonctionne bien pour moi

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