数组元素替换_Linux Shell 通俗简要的讲解数组操作
Shell 數(shù)組
什么是數(shù)組?學(xué)過(guò)計(jì)算機(jī)編程語(yǔ)言的同學(xué)們都知道,數(shù)組的特性就是一組數(shù)據(jù)類型相同的集合
Bash Shell 數(shù)組中可以存放多個(gè)值,且只支持一維數(shù)組(不支持多維數(shù)組),初始化時(shí)不需要定義數(shù)組大小,
與大部分編程語(yǔ)言類似,Shell 數(shù)組元素的下標(biāo)由0開(kāi)始。
Shell 數(shù)組用括號(hào)來(lái)表示,元素用"空格"符號(hào)分割開(kāi),語(yǔ)法格式如下:
array_name=(value1 ... valuen)
例子:
#!/bin/bash
test_array=(A B "C" D)
我們也可以使用下標(biāo)來(lái)定義數(shù)組:
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
讀取數(shù)組
讀取數(shù)組元素值的一般格式是:
${array_name[index]}
實(shí)例
#!/bin/bash
test_array=(A B "C" D)
echo "第一個(gè)元素為: ${test_array[0]}"
echo "第二個(gè)元素為: ${test_array[1]}"
echo "第三個(gè)元素為: ${test_array[2]}"
echo "第四個(gè)元素為: ${test_array[3]}"
執(zhí)行腳本,輸出結(jié)果如下所示:
$ chmod +x test_arr.sh
$ ./test.sh
第一個(gè)元素為: A
第二個(gè)元素為: B
第三個(gè)元素為: C
第四個(gè)元素為: D
獲取數(shù)組的長(zhǎng)度
獲取數(shù)組長(zhǎng)度的方法與獲取字符串長(zhǎng)度的方法相同,如:
#!/bin/bash
test_array[0]=A
test_array[1]=B
test_array[2]=C
test_array[3]=D
echo "數(shù)組元素個(gè)數(shù)為: ${#test_array[*]}"
echo "數(shù)組元素個(gè)數(shù)為: ${#test_array[@]}"
執(zhí)行腳本,輸出結(jié)果如下所示:
$ chmod +x test_arr.sh
$ ./test.sh
數(shù)組元素個(gè)數(shù)為: 4
數(shù)組元素個(gè)數(shù)為: 4
獲取數(shù)組中的所有元素
使用@ 或 * 可以獲取數(shù)組中的所有元素,如:
#!/bin/bash
test_array[0]=A
test_array[1]=B
test_array[2]=C
test_array[3]=D
echo "數(shù)組的元素為: ${test_array[*]}"
echo "數(shù)組的元素為: ${test_array[@]}"
執(zhí)行腳本,輸出結(jié)果如下所示:
數(shù)組的元素為: A B C D
數(shù)組的元素為: A B C D
刪除操作
清除某個(gè)元素:unset test_array[1],這里清除下標(biāo)為1的數(shù)組;
清空整個(gè)數(shù)組:unset test_array;
分片訪問(wèn)
分片訪問(wèn)形式為:${數(shù)組名[@或*]:開(kāi)始下標(biāo):結(jié)束下標(biāo)},注意,不包括結(jié)束下標(biāo)元素的值。
例如:${test_array[@]:1:4},這里分片訪問(wèn)從下標(biāo)為1開(kāi)始,元素個(gè)數(shù)為4。
模式替換
形式為:${數(shù)組名[@或*]/模式/新值}
例如:${test_array[@]/2/98}
數(shù)組的遍歷
數(shù)組遍歷我們使用for語(yǔ)句來(lái)演示:
for v in ${test_array[@]}; do
echo $v;
done
通過(guò)上述,我們講解了shell中數(shù)組的定義,已經(jīng)對(duì)數(shù)組的相關(guān)操作有獲取長(zhǎng)度,讀取某下標(biāo)值,對(duì)某個(gè)下標(biāo)賦值,刪除、分配和替換以及遍歷。
總結(jié)
以上是生活随笔為你收集整理的数组元素替换_Linux Shell 通俗简要的讲解数组操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 联想小新13pro锐龙版网卡_12G大内
- 下一篇: linux touch 源码,一天一个s