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] ~]$ 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]