◆ ksh定义数组:
set -A argname a b c
其中,set -A 告诉shell要建立一个数组,argname是数组名,a b c等字符为数组元素,下标为0,用空格分开.
访问数组的方法:
echo ${argname[*]} 显示数组所有元素
echo ${argname[n]} 显示数组第n个元素
echo ${#argname[*]} 显示数组元素个数
echo ${# argname [@]}
◆ bash:
一对括号表示是数组,数组元素用“空格”符号分割开。Bash只支持一维数组,不支持多维数组。
array_name=(ele1 ele2 ele3 ... elen)
1、访问元素:
获取数组中的元素要使用下标[ ],下标可以是一个整数,也可以是一个结果为整数的表达式
${array_name[index]}
其中,array_name 是数组名,index 是下标。使用@或*可以获取数组中的所有元素。
${array_name[*]}
${array_name[@]}
2、修改或增加元素
直接通过获取元素赋值即可修改或增加元素
array_name[index]=value
3、分片:
直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,上面例子:c 就是一个新数据。
echo ${a[@]:1:4}
c=(${a[@]:1:4})
4、替换:
调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。
echo ${a[@]/3/100}
◆ 数组遍历:
1、标准的for循环
#${#array[@]}获取数组长度用于循环
for(( i=0;i<${#array[@]};i++))
do
echo ${array[i]}
done
2、for … in
#也可以写成for element in ${array[*]}
for element in ${array[@]}
do
echo $element
done
遍历(带数组下标):
for i in "${!arr[@]}"
do
printf "%s\t%s\n" "$i" "${arr[$i]}"
done
3、While循环法:
i=0
#当变量(下标)小于数组长度时进入循环体
while [ $i -lt ${#array[@]} ]
do
echo ${ array[$i] } #按下标打印数组元素
let i++
done
本文详细介绍了Linux shell,特别是ksh和bash中数组的定义、访问、修改、分片及遍历方法。在ksh中,使用set -A命令创建数组,而在bash中,数组元素以空格分隔,仅支持一维数组。访问数组元素通过下标[ ],可以修改或增加元素,使用切片操作进行分片,并提供了多种遍历数组的方式,包括标准for循环、for ... in以及while循环。

2903

被折叠的 条评论
为什么被折叠?



