1. 程式人生 > >shell陣列程式設計

shell陣列程式設計

參考連線

https://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html


linux shell 陣列建立及使用技巧
linux shell在程式設計方面比windows 批處理強大太多,無論是在迴圈、運算。已經資料型別方面都是不能比較的。 下面是個人在使用時候,對它在陣列方面一些操作進行的總結。

 

1.陣列定義

 

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ echo $a
1

一對括號表示是陣列,陣列元素用“空格”符號分割開。

 


2.陣列讀取與賦值


得到長度:

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

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

讀取:

[[email protected] ~]$ echo ${a[2]}
3

[[email protected] ~]$ echo ${a[*]}
1 2 3 4 5

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

 

賦值:

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

[[email protected] ~]$ echo ${a[*]}
1 100 3 4 5

 

[[email protected] ~]$ a[5]=100
[[email protected] ~]$ echo ${a[*]}

1 100 3 4 5 100

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


刪除:

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ unset a
[[email protected] ~]$ echo ${a[*]}

[[email protected] ~]$ a=(1 2 3 4 5)
[

[email protected] ~]$ unset a[1]
[[email protected] ~]$ echo ${a[*]}
1 3 4 5
[[email protected] ~]$ echo ${#a[*]}
4

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

 

 

3.特殊使用

分片:

[[email protected] ~]$ a=(1 2 3 4 5)
[[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 就是一個新資料。

替換:

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ echo ${a[@]/3/100}
1 2 100 4 5
[[email protected] ~]$ echo ${a[@]}
1 2 3 4 5
[[email protected] ~]$ a=(${a[@]/3/100})
[[email protected] ~]$ echo ${a[@]}
1 2 100 4 5

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

 

 


shell陣列程式設計

陣列是相同資料型別的元素安一定順序排列的組合,就是把有限個型別相同的變數用一個名字引用,然後用編號區分它們變數的集合

建立和定義陣列

TEST=(test1 test2 test3)

陣列下標一般從0開始,引用陣列方法如下

echo ${TEST[0]} 引用第一個陣列變數

echo ${TEST[1]} 引用第二個陣列變數

echo ${TEST[@]} 顯示該陣列所有引數

echo ${#TEST[@]} 顯示該陣列引數個數

echo ${#TEST[0]} 顯示test1字元長度

echo ${TEST[@]:0} 列印陣列所有值

echo ${TEST[@]:1} 列印從第二值個開始的所有值

echo ${TEST[@]:0:2} 列印第一個值和第二個值

echo ${TEST[@]:1:2} 列印第二個值和第三個值


陣列替換操作

 

陣列刪除 unset array[0]