1. 程式人生 > >shell編程-基本語法

shell編程-基本語法

例如 我們 值類型 元素 uptime 操作 開頭 brush art

變量的作用

等號兩邊禁空格

for 循環

#語法一  
for 變量 in 值1 值2 值3..  
   do  
     程序塊兒  
   done  
  
#  
  
#語法二  
for 變量 `命令`  
   do  
     程序塊兒  
   done  
  
#  
  
#語法三  
for ((初始值; 循環控制; 變量變化))  
  do  
    程序塊兒  
  done  

e.g. 輸出3次uptime

#!/bin/bash  
  
for i in 1 2 3 4 5   
  do    
    echo "$i-->$(uptime)"  
  done  

e.g. 批量解壓縮當前文件夾下所有的.tar.gz 文件

#!/bin/bash  
  
for i in `ls ./*.tar.gz`   
   do    
     tar -zxvf $i >/dev/null  
   done  

e.g. 求1~100 的和

#!/bin/bash  
  
#註意變量賦值的時候,=兩邊絕對不能有空格  
sum=0  
for (( i=1; i<=100; i++ ))  
  do    
   sum=$(( $sum + $i ))  
  done  
  
echo "1+2+3+...+100=$sum"  

數組

  • 數組的定義

  數組的特性就是一組數據類型相同的集合

  我們來看兩種數據類型:一是數值類型,二是字符串類型;雖然shell本身是弱類型的,但也可以這麽區分。

  數值類型的數組:一對括號表示數組,數組中元素之間使用“空格”來隔開。

  舉個列子:

  arr_number=(1 2 3 4 5);

  字符串類型數組:同樣,使用一對括號表示數組,其中數組中的元素使用雙引號或者單引號包含,同樣使用“空格”來隔開。

  arr_string=("abc" "edf" "sss"); 或者 arr_string=(‘abc‘ ‘edf‘ ‘sss‘);

  • 數組的操作

   我們使用數值類型數組 arr_number=(1 2 3 4 5) 做為源數組進行相關的講解:獲取數組長度,讀取某個下標的值,對某個下標賦值,刪除、分配和替換以及遍歷。

   shell看想獲取某個變量的值,使用$符開頭,如:$a或者${a}即可。

  獲取數組長度

  arr_length=${#arr_number[*]}或${#arr_number[@]}均可,即形式:${#數組名[@/*]} 可得到數組的長度。

  讀取某個下標的值

  arr_index2=${arr_number[2]},即形式:${數組名[下標]}

  對某個下標賦值

  這裏需要提出兩個問題:

    第一個問題是如果該下標元素已經存在,會怎麽樣?

    答:會修改該下標的值為新的指定值。

    例如:arr_number[2]=100,數組被修改為(1 2 100 4 5)

    第二個問題是如果指定的下標已經超過當前數組的大小,如上述的arr_number的大小為5,指定下標為10或者11或者大於5的任意值會如何?

    答:新賦的值被追加到數組的尾部。

    例如:arr_number[13]=13,數組被修改為(1 2 100 4 5 13)

  刪除操作

    清除某個元素:unset arr_number[1],這裏清除下標為1的數組;

    清空整個數組:unset arr_number;

  分片訪問

    分片訪問形式為:${數組名[@或*]:開始下標:結束下標},註意,不包括結束下標元素的值。

    例如:${arr_number[@]:1:4},這裏分片訪問從下標為1開始,元素個數為4。

  模式替換

    形式為:${數組名[@或*]/模式/新值}

    例如:${arr_number[@]/2/98}

  數組的遍歷

    數組遍歷我們使用for語句來演示:

    for v in ${arr_number[@]}; do

      echo $v;

    done

shell編程-基本語法