2009-12-11 3 views

ответ

11

Предполагая Баш:

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

Так, ${#ARRAY[*]} расширяется до длины массива ARRAY.

+0

Этот вопрос довольно старый, но я хотел бы знать, как сохранить эту длину массива в одной переменной? Я пробовал что-то вроде foo = $ {# foo [*]}, но оболочка бросает ошибку 'command not found'. – Shekhar

+0

Что такое '*'? Чем он отличается от '@'? – jameshfisher

+0

@jameshfisher В этом использовании он не используется. – unwind

-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 
Смежные вопросы