引子:数组 在执行 find /opt/work/testDdir -name 'file*' 时,有可能会返回多个结果。将会返回的结果保存在变量中,须要对其作 [ -r $findResult ] 的处理时,就会报错 binary operator expected 。 |
因而,开始尝试一种方法,能够处理这样相似的报错。并且,在须要输出时,也便于控制输出格式。 |
Bash 提供了对一维数组(索引数组、关联数组)的支持。
ide
1.建立数组spa
当出现这样的定义时,默认建立索引数组,形如:name[subscript]=value
code
res[i]=$item
使用 declare 声明一个索引数组索引
declare -a res
一次性,为数组全部成员赋值,亦可建立关联数组ip
file=(1 2 3 4 5 6 7 8 9)
关联数组的声明md5
declare -A file
2.数组的使用字符串
获取数组长度:${
#Array[@]}
it
max=${#res[@]}
成员变量引用格式:${name[subscript]}
# 遍历数组元素 max=${#res[@]} for((i=0; i<max; i++)); do printf "%s\n" "${res[$i]}" done
引用时,不使用数组下标,默认等于使用 [0] 。
$ printf "${res}" /opt/work/testDir/file6
3.二者差别
关联数组的下标能够是个字符串
$ declare -A develop $ develop['yt']="yangtao" $ develop['mtf']="matnfei" $ develop['mh']="mahan" $ printf "length of develop: %d\n" "${#develop[@]}" length of develop: 3 $ printf "%s\n" "${develop['yt']}" yangtao $ printf "%s\n" "${develop['mtf']}" matnfei $ printf "%s\n" "${develop['mh']}" mahan
假若是索引数组,使用字符串时,就成了这个样子
$ declare -a develop $ develop['yt']="yangtao" $ develop['mtf']="matnfei" $ develop['mh']="mahan" $ printf "length of develop: %d\n" "${#develop[@]}" length of develop: 1 $ printf "%s\n" "${develop['yt']}" mahan $ printf "%s\n" "${develop['mtf']}" mahan $ printf "%s\n" "${develop['mh']}" mahan
4.使用实例
处理一组相同的任务时,数组是个好东东。检查一下是否存在多个rpm包,……
command=(tar bz2 md5sum) maxLength=${#command[@]} for((i=0; i<maxLength; i++)); do rpm -q ${command[$i]} echo $? done
执行脚本效果:
[view@file ma]$ . lib/chkCommand tar-1.26-29.el7.x86_64 0 package bz2 is not installed 1 package md5sum is not installed 1