shell 3数组

shell数组

shell支持一维数组(不支持多维数组),并且没有限定数组的大小。

定义数组

shell中,用括号来表示数组,数组元素用空格分隔,下标从0开始,元素的类型

方式1

 数组名=(值1 值2...值n),如array_name=(value0 value1 value2)

方式2

   array_name=(value0
   value1
   value2
   )

方式3 单独定义数组的值

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

读取数组

获取数组某个元素的值${数组名[下标]} 
使用@可以获取数组中的所有元素${数组名[@]}

获取数组的长度

获取数组长度的方法和获取字符串长度的方法相同。
length=${#数组名[@]}
length=${#数组名[*]}
获取数组某元素的长度
length=${#数组名[下标]}
#shell
#!/bin/sh
list1=("east" "west" "north" "south")
list2=('one'
 'two' 
 'three' 
 'four'
)
list3[0]="陆风"
list3[1]="江铃"
list3[3]="长安"
echo "list1: "${list1[@]} ${#list1[@]}
echo "list2: "${list2[@]} ${#list2[@]}
echo "list3: "${list3[@]} ${#list3[@]}
echo "list3[0]: "${list3[0]} ${#list3[0]}
echo "list3[2]: "${list3[2]} ${#list3[2]}

list1: east west north south 4
list2: one two three four 4
list3: 陆风 江铃 长安 3
list3[0]: 陆风 2
list3[2]: 0

shell数组中和@的区别
加上双引号,会被当成一串字符串处理

@加上双引号,依然被当作数组处理
#shell

#!/bin/sh
list_a=(1 2 'a' b)
echo "--{array[@]}--"
for i in ${list_a[@]};do
    echo $i
done
echo "--{array[*]}--"
for i in ${list_a[*]};do
    echo $i
done
echo "--\"{array[@]}\"--"
for i in "${list_a[@]}";do
    echo $i
done
echo "--\"{array[*]}\"--"
for i in "${list_a[*]}";do
    echo $i
done

--{array[@]}--
1
2
a
b
--{array[*]}--
1
2
a
b
--"{array[@]}"--
1
2
a
b
--"{array[*]}"--
1 2 a b

变量在数组中的使用

数组里添加变量,必须要加$,否则添加的是一个字符串
使用变量作为下标去获取value,变量加不加$都可以
#shell
#!/bin/sh
strA="Tom Cat"
StrB="Black"
a=3
list_a=(1 2 'a' b $strName StrDarle)
echo ${list_a[@]}
echo ${list_a[$a]} ${list_a[a]}

1 2 a b StrDarle
b b

转载于:https://www.cnblogs.com/csj2018/p/9541595.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值