shell 数组

来源:互联网 发布:mac winebottler msi 编辑:程序博客网 时间:2024/06/06 05:03

1.数组的定义

arr=(1 2 3 4 5 6) 

2.数组元素的读取

echo ${arr[0]} #输出arr[0] # 1echo ${arr[*]} #输出整个数组内容# 1 2 3 4 5 6echo ${arr[@]} #输出整个数组内容# 1 2 3 4 5 6

3.遍历数组 (for 循环)

for 变量名 in 循环的条件do    commanddone

如:

for i in $[arr[*]}do    echo $idone

4.数组的长度

 ${#数组名[*或@]}
echo ${#arr[@]}# 6

5.赋值

arr[6]=7echo ${arr[*]}# 1 2 3 4 5 6 7

6.分片 格式:
${数组名[*或@]:起始位:长度},截取部分数组,返回字符串,中间用空格分隔;
将结果使用“()”,则得到新的切片数组

echo ${arr[@]:0:4}# 1 2 3 4arr1=(${arr[@]:0:4})echo ${arr1[*]}# 1 2 3 4

7.替换元素,格式:
${数组名[*或@]/查找字符/替换字符}, 不会修改原数组;
如需修改的数组,将结果使用“()”赋给新数组

echo ${arr[*]}# 1 2 3 4 5 6 7echo ${arr[*]/7/99}# 1 2 3 4 5 6 99arr2=(${arr[*]/7/99})echo ${arr2[*]}# 1 2 3 4 5 6 99

8.删除数组 格式:
unset 数组 清除整个数组;
unset 数组[下标],清除单个元素

echo ${arr[@]}# 1 2 3 4 5 6 7 unset arr[0]# 2 3 4 5 6 7unset arr# 没有元素

例:写一个脚本让用户输入多个城市的名字(可以是中文),要求不少于5个,然后把这些城市存到一个数组里,最后用一个for循环把他们打印出来。

#!/bin/bash  read -p "请输入至少5个城市的名字,用空格分隔:" city    #用一个字符串来存储五个城市,中间用空格分开n=`echo $city|awk '{print NF}'`    #空格为AWK的默认分隔符,NF为字段数if [ $n -lt 5 ]then    echo "输入的城市个数至少为5"    exitfiname=($city) #赋值for i in ${name[@]}do    echo $i
原创粉丝点击