1. 程式人生 > >陣列在shell指令碼的操作

陣列在shell指令碼的操作

1.陣列定義

定義一個數組:

[[email protected] ~]# a=(1 2 3 4 5 6 7 8)

列印陣列的元素(預設第一個元素)

[[email protected] ~]# echo $a

1

一對括號表示是陣列,陣列元素用“空格”符號分割開,等號兩端不能有空格。

2.陣列讀取與賦值

1)得到長度:用@或*

[[email protected] ~]# echo ${#a[@]}

8

[[email protected] ~]# echo ${#a[*]}

8

用${#陣列名[@或*]} 可以得到陣列長度

2)讀取:

[[email protected] ~]# echo ${a[4]}

5

[[email protected] ~]# echo ${a[*]}

1 2 3 4 5 6 7 8

用${陣列名[下標]} 下標是從0開始 下標是:*或者@ 得到整個陣列內容

3)賦值:

[[email protected] ~]# a[1]=100

[[email protected] ~]# echo ${a[*]}

1 100 3 4 5 6 7 8

[[email protected] ~]# a[5]=140

[[email protected]

~]# echo ${a[*]}

1 100 3 4 5 140 7 8

直接通過 陣列名[下標] 就可以對其進行引用賦值,如果下標不存在,自動新增新一個數組元素

4)刪除:

[[email protected] ~]# a=(1 2 3 4 5 6 7 8)

[[email protected] ~]# unset a

[[email protected] ~]# echo ${a[*]}

[[email protected] ~]# a=(1 2 3 4 5 6 7 8)

[[email protected] ~]# unset a[1]

[[email protected] ~]# echo ${a[*]}

1 3 4 5 6 7 8

[[email protected] ~]# echo ${#a[*]}

7

直接通過:unset 陣列[下標] 可以清除相應的元素,不帶下標,清除整個資料。

3.特殊使用

1)分片:

[[email protected] ~]# a=(1 2 3 4 5 6 7 8)

[[email protected] ~]# echo ${a[@]:0:3}

1 2 3

[[email protected] ~]# echo ${a[@]:1:4}

2 3 4 5

[[email protected] ~]# c=(${a[@]:1:4})

[[email protected] ~]# echo ${#c[@]}

4

[[email protected] ~]# echo ${c[*]}

2 3 4 5

直接通過 ${陣列名[@或*]:起始位置:長度} 切片原先陣列,返回是字串,中間用“空格”分開,因此如果加上”()”,將得到切片陣列,上面例子:c 就是一個新資料。

2)替換:

[[email protected] ~]# a=(1 2 3 4 5 6 7 8)

[[email protected] ~]# echo ${a[@]/3/100}

1 2 100 4 5 6 7 8

[[email protected] ~]# echo ${a[@]}

1 2 3 4 5 6 7 8

[[email protected] ~]# a=(${a[@]/3/100})

[[email protected] ~]# echo ${a[@]}

1 2 100 4 5 6 7 8

呼叫方法是:${陣列名[@或*]/查詢字元/替換字元} 該操作不會改變原先陣列內容,如果需要修改,可以看上面例子,重新定義資料。

 

參考:https://www.cnblogs.com/kevingrace/p/5761975.html