shell中数组扩展技巧及实例

1、申明数组

例一:

a=(111 222)    #一对括表示是数组,数组元素用“空格“符号分割开。

echo ${a[0]}    #数组下标从0开始

echo $a          #数组也是指针形似,数组名称相当于一个指针,指向第一个数组元素

输出:

111

111 


例二:

a=([0]=111 [1]=222)


例三:

a[0]=111

a[1]=222


2、数组的控制台输入

例一:

read a[0]   #输入222回车

read a[1]   #输入333回车

echo ${#a[@]}

输出:2


3、数组元素的删除

例一:

a=(111 222)

unset a[1]    #删除a[1]元素

echo ${#a[@]}

输出:1


例二:

a=(111 222 333)

unset a        #删除a数组

echo ${#a[@]}

输出:0


4、取数组的元素个数

规则:${#数组变量[@]}或${#数组变量[*]}

例一:

echo ${#a[@]}    #对于shell脚本传参数,$@表示所有的参数,$#表示参数的个数,不难理解,数组也是这样

输出:2


5、取数组索引列表

规则:${!数组变量[@]}或${!数组变量[*]}
含义:把数组变量所有的索引列出,各索引值之间用空格符分开

例一:

filelist=(/etc/passwd  /etc/issue  /etc/sysconfig/syslog)
for  index  in ${!filelist[@]}
do 
       echo "index  $index:${filelist[$index]}"
done

输出:

index  0:/etc/passwd
index  1:/etc/issue
index  2:/etc/sysconfig/syslog


6、子串提取

规则:${数组变量[@]:startindex:length}或${#数组变量[*]:startindex:length}

例一:

a=(111 222 333 444 555)

echo  ${a[@]:0:3}  #在数组中可以用:n进行数组的范围分片,显示一个范围的数值


7、子串替换

a=(111 222 333 444 555)

例一:第一个匹配到的,会被替换

echo ${a[@]/1/6}

输出:

611 222 333 444 555


例二:所有匹配到的,会被替换

echo ${a[@]//1/6}

输出:

666 222 333 444 555


例三:没有指定替换子串,则删除匹配到的子符

echo ${a[@]//1/}

输出:

222 333 444 555


例四:替换字符串前端子串

echo ${a[*]/#1/6}

611 222 333 444 555


例五:替换字符串后端子串

echo ${a[*]/%1/6}

输出:

116 222 333 444 555


小技巧:

1.生成30个#字符

seq -s '#' 30 | sed -e 's/[0-9]*//g'




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值