array1=()
array1[0]=123
array1[1]=abc
shell中的数组使用方法
arr=(1 2 3 4 5 6 ab cde)
echo $arr # 默认获取第一个元素 :1
echo ${arr[1]} # 通过下标访问,0 是第一个元素,1是第二个元素:2
echo ${#arr[*]} #输出数组的长度:8
echo ${#arr[@]} #同上输出数组的长度:8
arr[${#arr[*]}]=7 #增加一个元素,现在是:arr=(1 2 3 4 5 6 ab cde 7)
echo ${arr[@]} #把数组 arr 当做字符串输出:1 2 3 4 5 6 ab cde 7
echo ${arr[*]} #同上把数组 arr 当做字符串输出:1 2 3 4 5 6 ab cde 7
arr[0]=8 #把下标为 0 的数组值改为 8,现在是 arr=(8 2 3 4 5 6 ab cde 7),echo ${arr[0]} 结果为 8
echo ${#arr[7]} #输出下标为 7 的元素(cde)的长度:3
echo ${arr[@]:1:3} #切片方式获取一部分数组内容,获取下标为第1至第3之间的元素:1 2 3
echo ${arr[@]:2} #从第下标为 2 的元素开始到最后一个元素
echo ${arr[@]::2} #从头开始的前两个元素
###1
for i in {0..6};do
a[$i]=$i
done
echo ${a[@]}
##2
x=0
for i in {1..6};do
a[$x]=$i
((x++))
done
echo ${a[@]}
// ((x++)) 等于 x=`expr ${x} + 1`
###
##循环输出数组元素的值(一)
A=(a b c def)
i=0
while [ $i -lt ${#A[*]} ];do
echo ${A[$i]}
let i++
done
#屏幕输出:
a
b
c
def
#循环输出数组元素的值 (二)
注意,在条件中,引用变量一定要用双引号 ,否则报错
for (( j=0; j<"${#A[*]}"; j=j+1 ));do
echo ${A[$j]}
done
#循环输出数组元素的值 (三)
注意,${A[*]}不能写成$A ,$A默认是第一个元素,如果A="a b c def",就可以写$A
for value in ${A[@]};do
echo $value
done
01
$ arr=(123 34 3 5)
02
array 的模拟操作
push:
array=("${array[@]}" $new_element)
pop:
array=(${array[@]:0:$((${#array[@]}-1))})
shift:
array=(${array[@]:1})
unshift
array=($new_element "${array[@]}")
function del_array {
local i
for (( i = 0 ; i < ${#array[@]} ; i++ ));do
if [ "$1" = "${array[$i]}" ] ;then
break
fi
done
del_array_index $i
}
function del_array_index {
array=(${array[@]:0:$1} ${array[@]:$(($1 + 1))})
}
阅读(749) | 评论(0) | 转发(0) |