shell-數組訪問


下標訪問

與其他語言(java,c++)一樣,shell訪問數組的具體元素是通過下標來指定的,格式為:
array[n]

array表示數組名,n為下標(n從0開始,所以訪問元素n,下標為n-1)

#!/bin/bash
array=(1 3 4 5 6)
echo "訪問第四個元素 ${array[3]}"
echo "訪問第二個元素 ${array[1]}"

輸出結果為:

統計數組長度

使用系統變量$#來統計長度,語法為:
${#array[@]}${#array[*]}

$*表示將結果以“參數1 參數2 ....”的形式將結果以一個字符串的形式返回。
$@表示將結果以“參數1” “參數2” “參數3” ....“參數n”的形式將結果逐個返回每個參數。實際差別不大

例如:

#!/bin/bash
array=(1 2 3 4 5 6 7 8 9 10)

echo ${#array[@]}

echo ${#array[*]}

輸出結果為:

循環遍歷數組

for循環(類C風格)來遍歷數組

#!/bin/bash
array=(Mon Tue Wed Thu Fri Sat Sun)
j="${#array[*]}"
for ((i=0;i<$j;i++))
do
        echo "${array[$i]}"
done

輸出結果為:

切片獲取部分數組元素

所謂切片就是截取部分元素或某個元素的部分內容,其語法為:
${array[@]:起始位置:終止位置:}或${array[*]:起始位置:終止位置}
實例:

#!/bin/bash
program=(c c++ c# java python PHP perl go .net js shell)

echo "第三到第六的語言為:${program[*]:2:5}"

echo "第七到第十一的語言為:${program[@]:6:10}"

輸出結果為:

替換數組元素

對數組元素進行替換,語法為:
${array[@]/old/new}
直接在切片的代碼里面加吧

#!/bin/bash
program=(c c++ c# java python PHP perl go .net js shell)
echo "替換Java這個家伙 ${program[@]/java/VisualBasic}"
a=${program[@]/PHP/java}
b=(${program[@]/shell/Ruby})      #不加園括號就會變成字符串,加了得到的還是數組
echo
echo $a
echo
echo ${b[@]}

輸出結果為:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM