Arrays 在bash中解释数组长度的${#arrayname[@]}语法?
我知道在bash中可以通过执行Arrays 在bash中解释数组长度的${#arrayname[@]}语法?,arrays,bash,syntax,Arrays,Bash,Syntax,我知道在bash中可以通过执行${{arrayname[@]}来获得数组的长度 我的问题是:这只是我必须记住的东西,还是这个语法可以分解成可以理解的部分?例如,@符号表示在哪里可以找到索引?为什么“@”的作用方式与“*”相同。它没有提供具体的索引,而是引用了完整的内容 “#”告诉bash您需要长度 在表单${#PARAMETER}的一般用法中返回参数值的长度(以字符为单位,而不是以字节为单位) myString="Hello StackOverflow!" printf "%s\n" "${#m
${{arrayname[@]}
来获得数组的长度
我的问题是:这只是我必须记住的东西,还是这个语法可以分解成可以理解的部分?例如,
@
符号表示在哪里可以找到索引?为什么“@”的作用方式与“*”相同。它没有提供具体的索引,而是引用了完整的内容
“#”告诉bash您需要长度
在表单
${#PARAMETER}的一般用法中
返回参数值的长度(以字符为单位,而不是以字节为单位)
myString="Hello StackOverflow!"
printf "%s\n" "${#myString}"
20
但对于阵列,此扩展类型有两种含义:
@
和*
它
报告数组中集合元素的数量myArray=(1 2 3 4 15)
printf "%s\n" "${myArray[@]}" # <-- Gives me list of elements
1
2
3
4
15
printf "%s\n" "${#myArray[@]}" # <-- Gives me number of elements
5
#
在变量引用的开头表示获取变量值的长度。对于普通变量,这表示其长度(以字符为单位)#
是“number”符号,因此您可以记住它的意思是“变量中的事物数”
数组索引中的@
或*
意味着使用整个数组,而不是特定的元素,它返回的不是字符数,而是数组元素数<代码>*在许多上下文中用作通配符,因此这应该很容易记住。另外,$*
和$@
用于表示shell脚本的所有参数,因此与所有数组元素的并行性应该是显而易见的
不能只写${#arrayname}
,因为当使用不带下标的数组变量时,它相当于数组的元素0
。因此${arrayname}
与${{arrayname[0]}
相同,后者是数组第一个元素中的字符数。您应该记住:)#
通常表示数字。e、 g.会议
-是参数的数目$#
-字符串的长度${#str}
$str
-数组的长度(元素数)${#arr[@]}
arr
-数组第一个元素的长度(如上面的${#arr}
)str
${parameter#word}
或${parameter##word}
与数字无关。(它从参数的开头删除最短/最长的单词
)
而且,#..
是注释;)
printf "%s\n" "${#myArray[4]}"
2