微学网

热门关键词:   as  thinkphp  ecshop  xxx  php分页  商务通
热门: ASP.NET PHP编程 ASP编程 JSP编程 Python

bash 数组

发布时间:2020-03-03 来源:未知 点击:

有2种数组:

  • 索引数组
  • 关联数组(java里的Hashmap),用key关联value

声明数组:

#声明索引数组
declare -a ary
#声明关联数组
declare -a ary

引用数组:${ary[idx]}

必须加大括号

直接访问数组名,就是访问第一个元素

[[email protected] ~]# ani[0]=dog
[[email protected] ~]# ani[1]=cat
[[email protected] ~]# echo ani
ani
[[email protected] ~]# echo ani[0]
ani[0]
[[email protected] ~]# echo $ani[0]
dog[0]
[[email protected] ~]# echo ${ani[0]}
dog
[[email protected] ~]# echo ${ani[1]}
cat

给数组赋值

read读取数组

就选项-a就是读取数组

# read -a li
a b 1 d a2
[[email protected] ~]# echo $li
a
[[email protected] ~]# echo ${li[0]}
a
[[email protected] ~]# echo ${li[2]}
1
[[email protected] ~]# echo ${li[4]}
a2

取得数组元素的个数

  • ${#ary[*]}
  • ${#ary[@]}

取得数组中某个元素的长度

${#ary[indx/名字]}

得到数组的所以元素

  • ${ary[*]}
  • ${ary[@]}

关联数组

关联数组使用前最好先声明,使用-A选项声明。

[[email protected] scripts]# declare -A map
[[email protected] scripts]# map=([aa]=df12 [dd]=132432 [2]=12d)
[[email protected] scripts]# echo ${map[*]}
132432 df12 12d
[[email protected] scripts]# echo ${map[aa]}
df12
[[email protected] scripts]# echo ${map[2]}
12d

[[email protected] ~]# declare -A l3
[[email protected] ~]# l3[a]=aa
[[email protected] ~]# l3[b]=bb
[[email protected] ~]# echo ${l3[a]}
aa
[[email protected] ~]# echo ${l3[b]}
bb
[[email protected] ~]# echo ${#l3[*]}
2
[[email protected] ~]# echo ${#l3[@]}
2
[[email protected] ~]# echo ${#l3[a]}
2
[[email protected] ~]# echo ${#l3[b]}
2
[[email protected] ~]# l3[c]=1dsfs
[[email protected] ~]# echo ${#l3[c]}
5
[[email protected] ~]# echo ${l3[*]}
aa bb 1dsfs
[[email protected] ~]# echo ${l3[@]}
aa bb 1dsfs

数组的切片

${ary[@]:offset:length}

  • offset:从第几个开始切
  • length:切多长
[[email protected] scripts]# l1=(1 2 3 4 5 6)
[[email protected] scripts]# echo ${l1[@]:2:2}
3 4

删除数组里某个元素

# l1=(1 2 3 4 5 6)
[[email protected] scripts]# echo ${l1[@]:2:2}
3 4
[[email protected] scripts]# unset l1[1]
[[email protected] scripts]# echo ${l1[@]}
1 3 4 5 6

练习

1,生成10个随机整数,求最大值

$RANDOM是内置变量,能生成随机整数。

#!/bin/bash
#

declare -a rand
declare -i max=0

for i in {0..9}; do
    rand[$i]=$RANDOM
    echo ${rand[$i]}
    if [ $max -lt ${rand[$i]} ]; then
        max=${rand[$i]}
    fi

done
echo "max is $max"

2,统计/var/log/*.log文件的行数之和。

关键点:files=(/var/log/*.log)。括号里是globbing风格,会自动展开。

#!/bin/bash
#

declare -a files
declare -i lines

files=(/var/log/*.log)

for ((i=0;i<${#files[*]};i++)); do
    let lines+=`wc -l ${files[$i]} | cut -d" " -f1`
done
echo $lines

 

 


这就是微学网-程序员之家为你提供的"bash 数组"希望对你有所帮助.
网络编程 | 前端制作 | 数据库 | CMS教程 | 脚本编程 | 微信公众号 | 框架 | 小程序 | 服务器 | APP开发 |

凡本网站转载的文章、图片等资料的版权归版权所有人所有,因无法和版权所有者一一联系,如果本网站选取的文/图威胁到您的权益,请您及时和本网站联系。 我们会在第一时间内采取措施,避免给双方造 成不必要的损失。
© 2015-2018 微学网 版权所有,并保留所有权利。 备案号:粤ICP备09051474号-1

电脑版 | 移动版