shell数组的使用

时间:2022-06-01 22:06:40

定义:  array=(1 2 3)

echo ${array[0]}

echo ${array[1]}

echo ${array[2]}

echo ${array[*]}   所有元素

echo ${array[@]}   数组的长度

数组赋值

array=(1 2 3)   此时数组中有3个元素

array[3]=4       此时数组中为4个元素

删除

unset array[0]  删除了第0个元素

截取

array=(1 2 3 4 5)

${array[@]:1:3}   截取1号到3号

结果2 3 4

echo ${array[@]:3:2}

结果4 5

array=( [0]=one [1]=two [2]=three [3]=four )
${array[@]:1} # two three four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three

数组替换

echo ${array[@]/5/6}   把数组中5替换成6,临时生效,元素族未被修改

结果 1 2 3 4 6

将结果变为数组

array=($(ls))

打印

所有元素  ${array[@]}或者${array[*]}

数组长度  ${#array[@]}或者${#array[*]}

单个元素  ${array[i]}

使用数组的一个例子,

                                gamelist=${PWD}/gamelist
for pid in `awk '{print $7}' $gamelist`
do
pingtai=`awk '/\<'''$pid'''\>/{print $4}' $gamelist`
daqu=`awk '/\<'''$pid'''\>/{print $6}' $gamelist`
destdir=${pingtai}cq_lycqly_s$daqu
dbname=${pingtai}cq_s$daqu
dbip=`awk '/\<'''$pid'''\>/{print $5}' $gamelist`
array=($(awk '/\<'''$pid'''\>/{print}' $gamelist))
for i in {..}
do
lanip=`echo ${array[i]}|cut -d: -f1`
port=`echo ${array[i]} |cut -d: -f2`
echo ${array[*]}
echo ---------------------------------------------------------------
# array=($(echo ${array[@]:}))
echo $lanip
echo --------------------------------------------------------------
echo $port
done
done