欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell命令之?dāng)?shù)組表示語法學(xué)習(xí)

 更新時間:2023年05月10日 09:13:38   作者:向陽逐夢  
這篇文章主要為大家介紹了Shell命令之?dāng)?shù)組表示語法學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

數(shù)組中可以存放多個值。Bash Shell 只支持一維數(shù)組(不支持多維數(shù)組),初始化時不需要定義數(shù)組大?。ㄅc PHP 類似)。

與大部分編程語言類似,數(shù)組元素的下標(biāo)由 0 開始。

Shell 數(shù)組用括號來表示,元素用"空格"符號分割開,語法格式如下:

array_name=(value1 value2 ... valuen)

一、實例

創(chuàng)建一個簡單的數(shù)組 my_array

my_array=(A B "C" D)

我們也可以使用數(shù)字下標(biāo)來定義數(shù)組:

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

二、讀取數(shù)組

讀取數(shù)組元素值的一般格式是:

${array_name[index]}

以下實例通過數(shù)字索引讀取數(shù)組元素:

my_array=(A B "C" D)
echo "第一個元素為: ${my_array[0]}"
echo "第二個元素為: ${my_array[1]}"
echo "第三個元素為: ${my_array[2]}"
echo "第四個元素為: ${my_array[3]}"

執(zhí)行腳本,輸出結(jié)果如下所示:

$ chmod +x test.sh 
$ ./test.sh
第一個元素為: A
第二個元素為: B
第三個元素為: C
第四個元素為: D

三、關(guān)聯(lián)數(shù)組

Bash 支持關(guān)聯(lián)數(shù)組,可以使用任意的字符串、或者整數(shù)作為下標(biāo)來訪問數(shù)組元素。

關(guān)聯(lián)數(shù)組使用 declare 命令來聲明,語法格式如下:

declare -A array_name

-A 選項就是用于聲明一個關(guān)聯(lián)數(shù)組。

關(guān)聯(lián)數(shù)組的鍵是唯一的。

以下實例我們創(chuàng)建一個關(guān)聯(lián)數(shù)組 site,并創(chuàng)建不同的鍵值:

declare -A site=(["google"]="www.google.com" ["runoob"]="www.runoob.com" ["taobao"]="www.taobao.com")

我們也可以先聲明一個關(guān)聯(lián)數(shù)組,然后再設(shè)置鍵和值:

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

也可以在定義的同時賦值:

訪問關(guān)聯(lián)數(shù)組元素可以使用指定的鍵,格式如下:

array_name["index"]

以下實例我們通過鍵來訪問關(guān)聯(lián)數(shù)組的元素:

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo ${site["runoob"]}

執(zhí)行腳本,輸出結(jié)果如下所示:

www.runoob.com

四、獲取數(shù)組中的所有元素

使用 @ 或 * 可以獲取數(shù)組中的所有元素,例如:

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "數(shù)組的元素為: ${my_array[*]}"
echo "數(shù)組的元素為: ${my_array[@]}"

執(zhí)行腳本,輸出結(jié)果如下所示:

$ chmod +x test.sh 
$ ./test.sh
數(shù)組的元素為: A B C D
數(shù)組的元素為: A B C D

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo "數(shù)組的元素為: ${site[*]}"
echo "數(shù)組的元素為: ${site[@]}"

執(zhí)行腳本,輸出結(jié)果如下所示:

$ chmod +x test.sh 
$ ./test.sh
數(shù)組的元素為: www.google.com www.runoob.com www.taobao.com
數(shù)組的元素為: www.google.com www.runoob.com www.taobao.com

在數(shù)組前加一個感嘆號 ! 可以獲取數(shù)組的所有鍵,例如:

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"
echo "數(shù)組的鍵為: ${!site[*]}"
echo "數(shù)組的鍵為: ${!site[@]}"

執(zhí)行腳本,輸出結(jié)果如下所示:

數(shù)組的鍵為: google runoob taobao
數(shù)組的鍵為: google runoob taobao

五、獲取數(shù)組的長度

獲取數(shù)組長度的方法與獲取字符串長度的方法相同,例如:

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D
echo "數(shù)組元素個數(shù)為: ${#my_array[*]}"
echo "數(shù)組元素個數(shù)為: ${#my_array[@]}"

執(zhí)行腳本,輸出結(jié)果如下所示:

$ chmod +x test.sh 
$ ./test.sh
數(shù)組元素個數(shù)為: 4
數(shù)組元素個數(shù)為: 4

看數(shù)組的時候,覺得遍歷數(shù)組用的比較多,所以自己試著寫了寫遍歷,同時試了一下在SHELL腳本中的變量自增幾個寫法,在就新手學(xué)習(xí)的時候注意一下 [ 和 $ 之間要有空格,沒有空格運行會報錯,新手可能不太注意這一點,我開始就沒注意到~~~~

示例如下:

#!/bin/bash
my_arry=(a b "c","d" abc)
echo "-------FOR循環(huán)遍歷輸出數(shù)組--------"
for i in ${my_arry[@]};
do
  echo $i
done
echo "-------::::WHILE循環(huán)輸出 使用 let i++ 自增:::::---------"
j=0
while [ $j -lt ${#my_arry[@]} ]
do
  echo ${my_arry[$j]}
  let j++
done
echo "--------:::WHILE循環(huán)輸出 使用 let  "n++ "自增: 多了雙引號,其實不用也可以:::---------"
n=0
while [ $n -lt ${#my_arry[@]} ]
do
  echo ${my_arry[$n]}
  let "n++"
done
echo "---------::::WHILE循環(huán)輸出 使用 let m+=1 自增,這種寫法其他編程中也常用::::----------"
m=0
while [ $m -lt ${#my_arry[@]} ]
do
  echo ${my_arry[$m]}
  let m+=1
done
echo "-------::WHILE循環(huán)輸出 使用 a=$[$a+1] 自增,個人覺得這種寫法比較麻煩::::----------"
a=0
while [ $a -lt ${#my_arry[@]} ]
do
 echo ${my_arry[$a]}
 a=$[$a+1]
done

Bourne shell(原生kernel下)下不支持?jǐn)?shù)組,只能通過模擬來實現(xiàn)類似數(shù)組功能。

實例 1

#!/bin/sh
#注意不是/bin/bash
echo "##############使用eval函數(shù)###############"
echo "使用參考:"
echo "http://www.runoob.com/linux/linux-comm-eval.html"
eval a1=bili
eval a2=nico
eval a3=yama
for i in 1 2 3 ; do
  eval echo "$a$i"
done

輸出結(jié)果:

##############使用eval函數(shù)###############
使用參考:
http://www.runoob.com/linux/linux-comm-eval.html
bili
nico
yama

實例 2

#!/bin/sh
#注意不是/bin/bash
echo "##########################################"
echo "指令參考:"
echo "http://www.runoob.com/linux/linux-comm-expr.html"
:<<!
根據(jù)用戶輸入的一句話來定義數(shù)組
并遍歷數(shù)組元素
!
echo "輸入字符串(以空格分開):"
read str
i=0
for word in $str; do
    i=`expr $i + 1`
    eval a$i="$word"
    eval echo "數(shù)組的第 $i 個元素為: $a$i"
done

輸出結(jié)果:

##########################################
指令參考:
http://www.runoob.com/linux/linux-comm-expr.html
輸入字符串(以空格分開):
runoob google taobao
數(shù)組的第 1 個元素為: runoob
數(shù)組的第 2 個元素為: google
數(shù)組的第 3 個元素為: taobao

字符串轉(zhuǎn)數(shù)組:

#!/bin/bash
words="aaa bbb ccc"
#字符串轉(zhuǎn)數(shù)組,空格是分隔符
array=(${words// / })
#打印數(shù)組最后一個成員
echo ${array[${#array[*]}-1]}
#打印數(shù)組長度
echo ${#array[*]}
#字符串不轉(zhuǎn)換為數(shù)組,在循環(huán)實現(xiàn)以空格為分隔符打印每個成員
for word in ${words}; do
    echo ${word}
done

運行結(jié)果:

ccc3aaabbbccc

以上就是Shell命令之?dāng)?shù)組表示語法學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于Shell命令語法數(shù)組表示的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論