1. 程式人生 > >Shell中陣列的操作

Shell中陣列的操作

寫在前面

看一下Shell中陣列的幾種操作:定義、遍歷、修改、刪除、引數傳遞操作

定義

Shell中對於陣列的定義直接使用(),元素之間使用空格隔開即可

array=(1 2 3 4 5)
array=(abc def gh)

取得陣列的值:取出所有的數值以及取出某個位置上的數值

echo ${array[@]}
echo ${array[*]}
echo $array[0]

獲取長度

echo ${#array[@]}
echo ${#array[*]}

如果陣列作為引數傳遞到函式中,還可以使用:

echo $#

修改

直接修改某點上的數值,如果下標超出陣列長度,則修改的數字會插入到陣列的最後

array[2]=4

刪除

分別為刪除某一節點的數值,以及刪除整個陣列 

unset array[2]
unset array

陣列遍歷

count=0
for value in ${array[@]}
do
    echo "the $count num is: $value"
    $count=$[ $count + 1 ]
done

作為引數

如果作為引數傳遞到函式中,那麼只能夠由#@來獲取引數列表,在函式中將這些重組為陣列,實現為:

function fun {
    local newarray=($(echo #@))
    for value in ${newarray[@]}
    do
        echo $value
    done
}

array=(1 2 3 4 5)
fun ${array[@]}

在newarray=($(echo #@))中,最外層括號就表示將輸出的引數中心轉換為陣列 

如果想要將陣列來做返回值呢?

那麼就使用Shell中輸出作為返回值即可,在函式外將輸出轉換為陣列,實現為:

function fun {
    local array=(5 6 7 8)
    echo ${array[@]}
}

rearray=($(fun))
echo ${rearray[@]}

栗子

參考部落格

https://www.cnblogs.com/Joke-Shi/p/5705856.html