KSH For循环数组:遍历数组值
时间:2020-01-09 10:41:08 来源:igfitidea点击:
如何在UNIX/Linux/BSD操作系统下使用ksh for循环迭代思想数组值?
ksh shell支持两种类型的数组:
- 索引数组
- 关联数组
ksh数组变量的元素由下标引用。
所有非负下标的值都必须在0到4,194,303之间。
语法
您可以按以下方式将数组定义为关联数组或索引数组。
索引数组的语法
arrayName[0]=value1 arrayName[1]=value2 arrayName[3]=value3
或使用set命令,如下所示:
set -A arrayName value1 value2 value3
关联数组的语法
typeset -A employees employees[sirname]="value1" employees[firstname]="value"
或者
set -A arrayName val1 val2 val3
ksh索引数组的示例
例如,创建一个具有三个值的字符数组,如下所示:
set -A characters Mugen Jin Fuu
要打印第一个值,请执行:
echo ${characters[0]}
要打印第三个和最后一个值,请执行:
echo ${characters[2]}
要打印所有值,请执行:
echo ${characters[@]}
要计算称为字符的数组中的项数,请执行:
echo ${#characters[@]}
您可以如下使用for循环遍历所有值:
for i in ${characters[@]}; do echo "Samurai Champloo character - $i"; done
输出示例:
Samurai Champloo character - Mugen Samurai Champloo character - Jin Samurai Champloo character - Fuu
您可以向退出数组中添加以下两项:
characters[3]="Sunflower-Samurai" characters[4]="Detective-Manzo"
Shell脚本示例
#!/bin/ksh
# set array called nameservers
set -A nameservers 192.168.1.1 192.168.1.5 192.54.1.5
# print all name servers
for i in ${nameservers[@]}
do
echo $i
done
Ksh关联数组示例
## set associative array ##
typeset -A ns
## Add values ##
ns[home]="192.168.1.254" ## home dns server ip
ns[isp]="123.1.2.254" ## my isp dns server ip
ns[google]="8.8.8.8" ## google public dns server ip
## Okay, display values #
print "${ns[home]}"
print "${ns[isp]}"
print "${ns[google]}"
## Count number of items in an array #
print "${!ns[@]}"
## Use for loop to print all items in an array##
for i in "${!ns[@]}"
do
echo "ns[$i] value is ${ns[$i]}"
done
输出示例:
ns[google] value is 8.8.8.8 ns[home] value is 192.168.1.254 ns[isp] value is 123.1.2.254

