Подтвердить что ты не робот

Как узнать длину массива в оболочке?

Как найти длину массива в оболочке unix?

4b9b3361

Ответ 1

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

Ответ 2

Предполагая bash:

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

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

Ответ 3

Из руководства Bash manual:

${#parameter}

Подставляется длина в символах расширенного значения параметра. Если параметр ‘или‘ @, подставляемое значение количество позиционных параметров. Если параметр является именем массива подписанный by или ‘@, подставляемое значение является числом элементы в массиве. Если параметр является индексированным именем массива подписанный отрицательным числом, это число интерпретируется как относительно одного больше, чем максимальный индекс параметра, так отрицательные индексы отсчитываются от конца массива, а индекс -1 ссылается на последний элемент.

Длина строк, массивов и ассоциативных массивов

string="0123456789"                   # create a string of 10 characters
array=(0 1 2 3 4 5 6 7 8 9)           # create an indexed array of 10 elements
declare -A hash
hash=([one]=1 [two]=2 [three]=3)      # create an associative array of 3 elements
echo "string length is: ${#string}"   # length of string
echo "array length is: ${#array[@]}"  # length of array using @ as the index
echo "array length is: ${#array[*]}"  # length of array using * as the index
echo "hash length is: ${#hash[@]}"    # length of array using @ as the index
echo "hash length is: ${#hash[*]}"    # length of array using * as the index

выход:

string length is: 10
array length is: 10
array length is: 10
hash length is: 3
hash length is: 3

Работа с [email protected], массив аргументов:

set arg1 arg2 "arg 3"
args_copy=("[email protected]")
echo "number of args is: $#"
echo "number of args is: ${#@}"
echo "args_copy length is: ${#args_copy[@]}"

выход:

number of args is: 3
number of args is: 3
args_copy length is: 3

Ответ 4

в tcsh или csh:

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

Ответ 5

В Fish Shell длина массива может быть найдена с помощью:

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

Ответ 6

это хорошо работает для меня

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

Ответ 7

Для тех, кто все еще ищет способ поместить длину массива в переменную:

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