BASH 陣列用法小結

2021-05-06 13:52:32 字數 2311 閱讀 3101

bash只支援一維陣列,但引數個數沒有限制。

宣告乙個陣列:

declare -a array

(其實不用宣告,按陣列方式直接賦值給變數即可,bash就知道那是陣列)

陣列賦值:

(1) array=(var1 var2 var3 ... varn)

(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varn)

(3) array[0]=var1

arrya[1]=var2

...array[n]=varn

計算陣列元素個數:

$  或者  $

bash的特殊引數 @ 和 * 都表示「擴充套件位置引數,從1開始」,但形式稍有差異,但在陣列裡使用好像是可以通用的。

引用陣列:

echo $

遍歷陣列:

filename=(`ls`)

for var in $;do

echo $var

done

陣列實用示例:(個人收集整理)

1、從「標準輸入」讀入n次字串,每次輸入的字串儲存在陣列array裡

i=0n=5

while [ "$i" -lt $n ] ; do

echo "please input strings ... `expr $i + 1`"

read array[$i]

b=$echo "$b"

i=`expr $i + 1`

done

2、將字串裡的字母逐個放入陣列,並輸出到「標準輸出」

chars='abcdefghijklmnopqrstuvwxyz'

for (( i=0; i<26; i++ )) ; do

array[$i]=$

echo $

done

這裡有趣的地方是 $,表示從chars字串的 $i 位置開始,獲取 1 個字元。如果將 1 改為 3 ,就獲取 3 個字元啦~ 結果是:

abcbcd

...vxy

xyzyz     //沒有足夠字串獲取了

z      //沒有足夠字串獲取了

3、將陣列應用到shell環境變數

3、將陣列應用到shell環境變數(1)

陣列賦值:

[root@pps ~]# season=("srping" "summer" "autumn" "winter")

當你發現賦值錯了,也可以立刻從新賦值糾正,如上面的 spring 被寫成 srping。

重新賦值:(原來的值被重寫)

[root@pps ~]# season=("spring" "summer" "autumn" "winter")

檢視一下環境變數:

[root@pps ~]# set | grep season

season=([0]="spring" [1]="summer" [2]="autumn" [3]="winter")

顯示整個陣列:

[root@pps ~]# echo $  或者 echo $

spring summer autumn winter

顯示某一陣列元素:

[root@pps ~]# echo $

winter

給單個陣列元素賦值:

[root@pps ~]# season[0]="new_spring"

再檢視一下看陣列:

[root@pps ~]# echo $

new_spring summer autumn winter

清除指定的單個陣列元素:

[root@pps ~]# unset season[2]

清除整個陣列:

[root@pps ~]# unset season

4、將陣列應用到shell環境變數(2) 【這個用法不錯!給原作者贊乙個!】

使用tr命令將檔案中的回車轉換成空格:

[root@pps ~]# cat /etc/shells | tr "/n" " " > /tmp/tmp.file

將檔案中內容給陣列賦值:(碰到第乙個回車符之前的內容)

[root@pps ~]# read -a shells < /tmp/tmp.file

檢視陣列賦值情況:

[root@pps ~]# set | grep "shells"

shells=([0]="/bin/sh" [1]="/bin/bash" [2]="/sbin/nologin" [3]="/bin/tcsh" [4]="/bin/csh" [5]="/bin/ksh")

後面可以將這個陣列環境變數應用到其它的shell指令碼或者應用程式裡了~

bash入門小結

本文總結自 shell從入門到精通 新建指令碼文字 test1.sh bin bash echo what s your name?read person echo hello,person 然後依次在命令列輸入 cd home zhangjin zhangjinming chmod x test....

Bash用法總結

linux 下shell基本上預設是 bash,下面是我總結的一些技巧。從左向右擷取最後乙個string後的字串 從左向右擷取第乙個string後的字串 從右向左擷取最後乙個string後的字串 從右向左擷取第乙個string後的字串 後台執行程式 使用子shell,比如 cd commlib ma...

bash陣列定義

如果用標準的 nix shell將不能使用bash的陣列特性。雖然在perl,python,php及其他高階語言中陣列已經不是乙個強大的功能,但陣列使用還是相當廣泛。bash只支援一維陣列,但引數個數沒有限制。宣告乙個陣列 declare a array 如果沒有宣告,按陣列方式直接賦值給變數,ba...