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