shell之數組定義

來源:互聯網
上載者:User

原文地址: http://blog.chinaunix.net/u/21908/showart.php?id=1420565 參考資料

* 《學習bash shell  第3 版》6.4. Arrays

Bash 中還可以使用陣列變數 , 其賦值有兩種 :
(1) name = (value1 ... valuen)  此時下標從 0 開始,也可以: names=([2]=alice  [0]=hatter [1]=duchess) 。
(2) name[index] = value


數組可以使用 declare –a 來顯示聲明, 數組下標的範圍沒有任何限制 , 同時也不必使用連續的分量。可以通過 ${ array [i ]}. 訪問數組中的元素。如果不指定元素,則表示第一個元素。 @  與 * 相同,但是使用時加引號,並在引號中返回每個參數, * 則作為一個整體的字串返回。

 

# A=(a b c def)

# echo ${A[@]}

a b c def

# echo ${A}  

a

echo ${A[*]}

a b c def

for i in "${A[@]}"; do

     echo $i

done

顯示的結果:

a

b

c

def

 

for i in "${A[*]}"; do

     echo $i

done

顯示結果:

a b c def

 

顯示目前有值的數組序號:―― bash 3.0 以後才支援。

# echo ${!A[@]}

0 1 2 3

// 取得數組元素的個數

# echo ${#A[@]}

4

顯示第 3 個元素裡面的元素的個數:

echo ${#A[3]}

3

echo ${#A[2]}

1

 

// 清除變數
$ unset A
$ echo ${A[@]}
$

A=B 
B=C 
unset $A  事實上所取消的變數是   B  而不是   A

 

// 清空變數 , 即將值變為空白
$ A=
$ echo ${A[@]}
$

 

 

#!/bin/bash

     for i in $(cut -f 1,3 -d: /etc/passwd) ; do

         echo $i

         array[${i#*:}]=${i%:*}

     done

echo "User ID $1 is ${array[$1]}."

echo "There are currently ${#array[@]} user accounts on the system."

 

 

 

用 shell 實現的選擇排序

# vi test2

#!/bin/bash

 

     values=(39 5 36 12 9 3 2 30 4 18 22 1 28 25)

     numvalues=${#values[@]}

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

         lowest=$i

         for (( j=i+1; j < numvalues; j++ )); do

             if [ ${values[j]} -le ${values[$lowest]} ]; then

                 lowest=$j

             fi

         done

         temp=${values[i]}

         values[i]=${values[lowest]}

         values[lowest]=$temp

     done

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

         echo -ne "${values[$i]}/t"

     done

echo -e "/n/n-------end---------/n"

 

環境變數 DIRSTACK 就是使用數組實現的。其他還有BASH_VERSINFO ,     PIPESTATUS

 

 

字串轉數組

str="12 34 56"

arr=($str)

count=${#arr[@]}

for (( i=0;i<count;i=i+1))

do

     echo "$i=arr[$i]"

done

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.