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...