2009-12-11 6 views

Respuesta

11

Suponiendo bash:

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

Así, ${#ARRAY[*]} se expande a la longitud de la matriz ARRAY.

+0

Esta pregunta es bastante antigua, pero me gustaría saber cómo almacenar esta longitud de matriz en una variable. Intenté algo como foo = $ {# foo [*]} pero el shell está lanzando el error 'command not found'. – Shekhar

+0

¿Qué es '*'? ¿Cómo difiere de '@'? – jameshfisher

+0

@jameshfisher No, en este uso. – unwind

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

¿Qué hace '@' aquí? –

-3

Para aquellos que siguen buscando una manera de poner la longitud de una matriz en una variable:

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

en tsch o CSH:

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

¡Ninguna de las anteriores funciona para mí! Esto funciona perfecto !! ¿Podrías por favor más detalles? – saravanakumar

1

En Fish la longitud de una array se puede encontrar con:

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

esto funciona bien para mí

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