2009-12-11 32 views

回答

11

假设的bash:

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

所以,${#ARRAY[*]}扩展到阵列ARRAY的长度。

+0

这个问题很老,但我想知道如何将这个长度的数组存储在一个变量中?我尝试了像foo = $ {#foo [*]},但是shell抛出'command not found'错误。 – Shekhar 2013-03-19 09:55:52

+0

什么是'*'?它与“@”有什么不同? – jameshfisher 2017-12-05 09:37:58

+0

@jameshfisher在这个用法中,它不是。 – unwind 2017-12-05 15:01:59

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

'@'在这里做什么? – 2017-05-29 07:50:08

-3

对于那些谁仍在寻找一种方法,把一个阵列的长度到一个变量:

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

在tcsh中或CSH:

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

以上都不适合我!这工作完美!你可以请更多的细节? – saravanakumar 2016-05-22 10:44:50

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