shell数组的用法
在shell里面想获取某个变量的值,使用$符开头,如:$a或者${a}即可。
获取数组长度
arr_length=${#arr_number[*]}或${#arr_number[@]}均可,即形式:${#数组名[@/*]} 可得到数组的长度。
读取某个下标的值
arr_index2=${arr_number[2]},即形式:${数组名[下标]}
删除操作
清除某个元素:unset arr_number[1],这里清除下标为1的数组;
清空整个数组:unset arr_number;
分片访问
分片访问形式为:${数组名[@或*]:开始下标:结束下标},注意,不包括结束下标元素的值。
例如:${arr_number[@]:1:4},这里分片访问从下标为1开始,元素个数为4。
${hosts[*]:0:6}取前六个元素
: 3 跳过3个
: -3 只取倒数3个(单个负数要加空格)
:3:4 跳过3个取4个
:3:-4 除了前三后4只要中间
模式替换
形式为:${数组名[@或*]/模式/新值}
例如:${arr_number[@]/2/98}
数组的遍历
数组遍历我们使用for语句来演示:
for v in ${arr_number[@]}; do
echo $v;
done
判断元素是否在数组内:
project=$1
projects=( 'project1',‘project2’ ) #数组
if [[ ${projects[*]} =~ $project ]]; then #使用@ 或 * 可以获取数组中的所有元素,=~是正则匹配
echo `date +"%Y-%m-%d %H:%M:%S"`" 开始检查工程$project"
else
echo `date +"%Y-%m-%d %H:%M:%S"`" 参数指定错误,工程${project}不在监控列表"
exit 255 #自定义退出代码
fi
字典:
#!/bin/bash
echo "shell定义字典"
#必须先声明
declare -A dic
dic=([key1]="value1" [key2]="value2" [key3]="value3")
#追加字典
dic+=([key4]="value4" [key5]="value5" [key6]="value5")
echo ${#dic[@]}
#打印指定key的value
echo ${dic["key1"]}
#打印所有key值
echo ${!dic[*]}
#打印所有value
echo ${dic[*]}
#遍历key值
for key in $(echo ${!dic[*]})
do
echo "$key : ${dic[$key]}"
done
echo "shell定义数组"
#数组
list=("value1" "value2" "value3")
#打印指定下标
echo ${list[1]}
#打印所有下标
echo ${!list[*]}
#打印数组下标
echo ${list[*]}
#数组增加一个元素
list=("${list[@]}" "value3")