下標訪問
與其他語言(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[@]}
輸出結果為: