Linux shell 中陣列的使用

dbasdk發表於2015-03-23

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

 

1.陣列定義

 

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ echo $a
1

 

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

 

2.陣列讀取與賦值

  • 得到長度

[chengmo@centos5 ~]$ echo ${#a[@]}
5

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

  • 讀取

[chengmo@centos5 ~]$ echo ${a[2]} 
3

[chengmo@centos5 ~]$ echo ${a[*]} 
1 2 3 4 5   

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

  • 賦值:

[chengmo@centos5 ~]$ a[1]=100

[chengmo@centos5 ~]$ echo ${a[*]} 
1 100 3 4 5

 

[chengmo@centos5 ~]$ a[5]=100     
[chengmo@centos5 ~]$ echo ${a[*]}

1 100 3 4 5 100

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

  • 刪除:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ unset a
[chengmo@centos5 ~]$ echo ${a[*]}

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ unset a[1]   
[chengmo@centos5 ~]$ echo ${a[*]} 
1 3 4 5
[chengmo@centos5 ~]$ echo ${#a[*]}
4

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

 

 

3.特殊使用

  • 分片:

[chengmo@centos5 ~]$ a=(1 2 3 4 5)
[chengmo@centos5 ~]$ echo ${a[@]:0:3}
1 2 3
[chengmo@centos5 ~]$ echo ${a[@]:1:4}
2 3 4 5

[chengmo@centos5 ~]$ c=(${a[@]:1:4})
[chengmo@centos5 ~]$ echo ${#c[@]}
4
[chengmo@centos5 ~]$ echo ${c[*]} 
2 3 4 5

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

  • 替換:

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

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

 

從上面講到的,大家可以發現linux shell 的陣列已經很強大了,常見的操作已經綽綽有餘了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1470776/,如需轉載,請註明出處,否則將追究法律責任。

相關文章