九、shell 编程-数组
普通数组:只能用整数作为数组的索引 关联数组:可以使用字符串作为数组的索引
数组定义
普通数组定义:
[root@newrain shell]# books=( linux shell awk sed )
引用:
[root@newrain shell]# echo ${books[0]}
linux
[root@newrain shell]# echo ${books[1]}
shell
[root@newrain shell]# echo ${books[2]}
awk
关联数组需要提前声明
declare -A myarry1
[root@newrain shell]# declare -A myarry1
[root@newrain shell]# myarry1=([name]=newrain [sex]=man [age]=26)
[root@newrain shell]# echo ${myarry1[name]}
newrain
[root@newrain shell]# echo ${myarry1[age]}
26
定义方法1:
# declare -a myarry=(5 6 7 8)
# echo ${myarry[2]}
显示结果为 7
定义方法2:
# array=( one two three four five six )
# array2=(tom jack alice)
# array3=(`cat /etc/passwd`)
# array4=(tom jack alice "bash shell")
# array5=(1 2 3 4 5 6 7 "linux shell" [20]=saltstack)
定义方法3: # 普通数组下标只能是数字
#!/bin/bash
area[11]=23
area[13]=37
area[51]="UFOs"
访问数组
当设置任何数组变量时,可以访问它
[root@newrain shell]# aa=(haha heihei baibai)
[root@newrain shell]# echo ${aa[0]} //访问数组中的第一个元素
[root@newrain shell]# echo ${aa[@]} //访问数组中所有的元素,等同与echo ${aa[*]}
[root@newrain shell]# echo ${#aa[@]} //统计元素的个数
[root@newrain shell]# echo ${!aa[@]} //统计索引
${array_name[index]} //引用
示例
#!/bin/bash
NAME[0]="BJ"
NAME[1]="SH"
NAME[2]="SZ"
NAME[3]="GZ"
NAME[4]="HZ"
NAME[5]="ZZ"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
echo "sixth Index: ${NAME[5]}"
输出结果为
$./test.sh First Index: BJ Second Index: SH sixth Index: ZZ
您可以访问数组中的所有项目通过以下方式之一:
${array_name[*]}
${array_name[@]}
示例
#!/bin/sh
NAME[0]="BJ"
NAME[1]="SH"
NAME[2]="SZ"
NAME[3]="GZ"
NAME[4]="HZ"
echo "First Index: ${NAME[*]}"
echo "Second Index: ${NAME[@]}"
输出结果
$./test.sh First Index: BJ SH SZ GZ HZ Second Index: BJ SH SZ GZ HZ
疑难点 shell数组中"*" 和 "@" 区别
关于在shell脚本中数组变量中 “*”跟 “@” 区别 “*”当变量加上“” 会当成一串字符串处理. “@”变量加上“” 依然当做数组处理. 在没有加上“” 的情况下 效果是等效的.
示例
#!/usr/bin/env bash
array=(gz cloud 19)
echo "case 1"
for line in "${array[@]}"
do
echo $line
done
echo "case 2"
for line in "${array[*]}"
do
echo $line
done
echo "case 3"
for line in ${array[*]}
do
echo

最低0.47元/天 解锁文章
458

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



