在bash中解释$ {#arrayname [@]}语法的数组长度?

Kat*_*ers 2 arrays syntax bash

我知道可以通过执行来获取bash中数组的长度${#arrayname[@]}.

我的问题是:这是我必须记住的东西,还是可以将这种语法分解为可理解的部分?例如,@符号表示人们期望找到索引的位置是什么?为什么#

Bar*_*mar 10

#在变量引用的开头意味着获取变量值的长度.对于普通变量,这意味着它的长度为字符.#是"数字"符号,所以你可以记住这意味着"变量中的事物的数量".

@或者*在数组索引中表示使用整个数组,而不是特定元素,而不是返回字符数,它返回数组元素的数量.*在许多上下文中用作通配符,所以这应该很容易记住.另外,$*$@用于表示所有参数到一个外壳脚本,所以与所有数组元素内的平行应该是显而易见的.

你不能只写,${#arrayname}因为当你使用没有下标的数组变量时,它等同于0数组的元素.所以${#arrayname}是相同的${#arrayname[0]},这是数组的第一个元素中的字符数.


jm6*_*666 5

你应该记住.:) #通常意味着数字.例如

  • $# - 是参数的数量
  • ${#str} - 字符串的长度 $str
  • ${#arr[@]}" - 数组的长度(元素数) arr
  • ${#arr}- 数组的第一个元素的长度(str如上所述)

不幸的是,${parameter#word}还是${parameter##word}有什么用数字.(它word从开头删除最短/最长parameter.

而且,# ....是评论;)