1. 程式人生 > >Linux基礎 - shell數組

Linux基礎 - shell數組

數組 刪除 one col 查找字符 evo 使用 分數 item

摘要

數組的特性就是一組數據類型相同的集合,雖然shell是弱類型,但是我們也可以將其數組分為數據類型的數組字符串類型的數組兩類
shell的數組元素之間用空格分隔開


數組操作

假設有以下兩個數組

array1=(1 2 3 4 5 6)
array2=("James" "Colin" "Harry")
  • 數據變量名默認輸出
    默認直接輸出變量的話,其輸出值默認為第一個元素的值,下標從0開始
root@pts/1 $ echo $array1
1
root@pts/1 $ echo $array2
James
  • 獲取數組元素
    格式:${數組名[下標]},下標從0開始,下標為*@代表整個數組內容
root@pts/1 $ echo ${array1[2]}
3
root@pts/1 $ echo ${array2[1]}
Colin

## 獲取全部元素
root@pts/1 $ echo ${array2[*]}
James Colin Harry
root@pts/1 $ echo ${array2[@]}
James Colin Harry
  • 獲取數組長度
    格式:${#數組名[*或@]}
root@pts/1 $ echo ${#array1[@]}
6
root@pts/1 $ echo ${#array2[*]}
3
  • 數組遍歷
    root@pts/1 $ for item in ${array2[@]}
    > do
    >     echo "The name is ${item}"
    > done
    The name is James
    The name is Colin
    The name is Harry
  • 數組元素賦值

格式:數組名[下標]=值,如果下標不存在,則新增數組元素; 下標已有,則覆蓋數組元素值

root@pts/1 $ array1[2]=18
root@pts/1 $ echo ${array1[*]}
1 2 18 4 5 6

root@pts/1 $ array2[4]="Betty"
root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
  • 數組切片

格式:${數組名[*或@]:起始位:長度},截取部分數組,返回字符串,中間用空格分隔;將結果使用(),則得到新的切片數組

root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
root@pts/1 $ echo ${array2[*]:1:3}
Colin Harry Betty

root@pts/1 $ array3=(${array2[*]:1:2})
ks-devops [~] 2018-01-25 20:30:16
root@pts/1 $ echo ${array3[@]}
Colin Harry
  • 數組元素替換

格式:${數組名[*或@]/查找字符/替換字符}

, 不會修改原數組;如需修改的數組,將結果使用“()”賦給新數組

root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
root@pts/1 $ echo ${array2[*]/Colin/Colin.Liu}
James Colin.Liu Harry Betty

root@pts/1 $ array4=(${array2[*]/Colin/Colin.liu})
root@pts/1 $ echo ${array4[*]}
James Colin.liu Harry Betty
  • 刪除元素

格式:
unset 數組,清除整個數組;
unset 數組[下標],清除單個元素

root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty
root@pts/1 $ echo ${array4[*]}
James Colin.liu Harry Betty

root@pts/1 $ unset array4
root@pts/1 $ unset ${array2[3]}

root@pts/1 $ echo ${array2[*]}
James Colin Harry Betty

root@pts/1 $ echo ${array4[*]}

root@pts/1 $

Linux基礎 - shell數組