如何查找BASH Shell数组长度(元素数)
时间:2020-01-09 14:16:32 来源:igfitidea点击:
如何在bash shell脚本中定义数组?
在运行用于shell循环的脚本时,如何找出bash数组的长度(元素数)?
Bash提供一维数组变量。
任何变量都可以用作数组。
内置的声明将显式声明一个数组。
没有数组大小的最大限制,也没有要求对成员进行连续索引或连续分配的要求。
该页面显示了如何在bash数组中查找元素数量。
如何定义bash数组?
可以使用以下语法定义数组:
ArrayName=("element 1" "element 2" "element 3")
用3个元素定义一个名为distro的数组,执行:
distro=("redhat" "debian" "gentoo")
如何引用bash数组中的任何元素?
可以使用以下语法引用数组的任何元素:
${ArrayName[subscript]}
要打印redhat,即第一个元素,请执行:
echo "${distro[0]}" echo "${distro[2]}" # will print gentoo
我如何找出bash shell数组的长度?
您可以使用以下语法轻松找出bash shell数组的长度:
${#ArrayName[@]}
要打印发行版数组的长度,请执行:
echo "${#distro[@]}"
输出示例:
3
如果下标是@或*,则单词会扩展到name的所有成员。
通过在变量前面加上前缀,您会发现数组的长度(即元素数)。
现在我们可以使用bash for循环从$distro读取或打印值:
## define it distro=("redhat" "debian" "gentoo") ## get length of $distro array len=${#distro[@]} ## Use bash for loop for (( i=0; i<$len; i++ )); do echo "${distro[$i]}" ; done
整合在一起
一个示例shell脚本,用于打印名为NAMESERVERS的数组:
#!/bin/bash # define array # name server names FQDN NAMESERVERS=("ns1.theitroad.net." "ns2.theitroad.net." "ns3.theitroad.net.") # get length of an array tLen=${#NAMESERVERS[@]} # use for loop read all nameservers for (( i=0; i<${tLen}; i++ )); do echo ${NAMESERVERS[$i]} done
输出示例:
ns1.theitroad.net. ns2.theitroad.net. ns3.theitroad.net.