Shell学习笔记 shell数组应用

21 篇文章 0 订阅
10 篇文章 0 订阅

数组分类

普通数组:只能使用整数 作为数组索引

[root@servicex script]# linux_name=(redhat ubuntu centOS)
[root@servicex script]# echo $linux_name
redhat
[root@servicex script]# echo ${linux_name[1]}
ubuntu
[root@servicex script]# echo ${linux_name[2]}
centOS
[root@servicex script]# echo ${linux_name[@]}
redhat ubuntu centOS
[root@servicex script]# echo ${linux_name[*]}
redhat ubuntu centOS

关联数组:可以使用字符串 作为数组索引

[root@servicex script]# tt=([index1]=test1 [index2]=test2)
[root@servicex script]# echo $tt
test2
[root@servicex script]# echo ${tt[@]}
test2

 注意:关联数组使用前需要先声明

[root@servicex script]# declare -A tt
[root@servicex script]# tt=([index1]=test1 [index2]=test2)
[root@servicex script]# echo ${tt[@]}
test1 test2
[root@servicex script]# echo ${tt[index1]}
test1
[root@servicex script]# echo ${!tt[@]}
index1 index2

变量的切片

[root@servicex script]# name=lalin
[root@servicex script]# echo $name
lalin
[root@servicex script]# echo ${name:1,2}
lin
[root@servicex script]# echo ${name:1}
alin
[root@servicex script]# echo ${name:1:1}
a
[root@servicex script]# echo ${name:1:2}
al
[root@servicex script]# echo ${name:1:2}

数组单个赋值、取全值、取索引

[root@servicex script]# fruit[0]=apple
[root@servicex script]# fruit[1]=banana
[root@servicex script]# fruit[2]=orange
[root@servicex script]# echo ${fruit[@]}
apple banana orange
[root@servicex script]# echo ${!fruit[@]}
0 1 2

查看数组赋值的结果

declare -a

[root@servicex script]# declare -a
declare -a BASH_ARGC='()'
declare -a BASH_ARGV='()'
declare -a BASH_LINENO='()'
declare -a BASH_SOURCE='()'
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -a DIRSTACK='()'
declare -a FUNCNAME='()'
declare -a GROUPS='()'
declare -a PIPESTATUS='([0]="0")'
declare -a fruit='([0]="apple" [1]="banana" [2]="orange")'
declare -a linux_name='([0]="redhat" [1]="ubuntu" [2]="centOS")'

统计数组的个数

[root@servicex script]# echo ${#fruit[@]}
3
[root@servicex script]# echo ${fruit[@]}
apple banana orange

统计/ETC/PASSWD中出现的bash及次数

[root@servicex script]# ./day05/bash_count.sh
/sbin/nologin : 19
/bin/sync : 1
/bin/bash : 6
/sbin/shutdown : 1
/sbin/halt : 1
[root@servicex script]# cat day05/bash_count.sh 
#!/usr/bin/bash
#Desc: count every bash type used in the /etc/passwd
#Author:lalin
#Date:2020-04-27

declare -A count_array
while read line;do
  bash_name=$(echo $line | awk -F ':' '{print $7}')
  let count_array[$bash_name]++
done < /etc/passwd

for i in ${!count_array[@]};do
  echo "$i : ${count_array[$i]}"
done

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值