shell編程---檔案測試及特殊變數

來源:互聯網
上載者:User

標籤:shell編程---檔案測試及特殊變數

一.算數運算 

  1、let 算術運算運算式

let C=$A+$B

  2、$[算術運算運算式]

C=$[$A+$B]

  3、$((算術運算運算式))

C=$(($A+$B))

  4、expr 算術運算運算式,運算式中各運算元及運算子之間要有空格,而且要使用命令引用

C=`expr $A + $B`

 5.提前結束指令碼程式

   exit 狀態返回碼

  6.檔案測試

       -e FILE:測試檔案是否存在

       -f FILE: 測試檔案是否為普通檔案

       -d FILE: 測試指定路徑是否為目錄

       -r FILE: 測試目前使用者對指定檔案是否有讀取許可權

       -w FILE: 測試目前使用者對指定檔案是否有寫入權限

       -x FILE: 測試目前使用者對指定檔案是否有執行許可權

    

    [ -e /etc/inittab ]

    [ -x /etc/rc.d/rc.sysinit ]

   7.測試指令碼是否有語法錯誤

     bash -n 指令碼

     bash -x 指令碼:逐步執行

   8.bash變數的類型

本地變數(局部變數)

環境變數

位置變數: 

$1, $2, ...

shift

特殊變數:

$?:命令的執行狀態返回碼

$#:參數的個數

$*: 參數列表

[email protected]:參數列表

    9.sed命令

     1.模式空間

       預設不編輯原檔案,僅對模式空間中的資料做處理;而後,處理結束後,將模式空間列印至螢幕(將原檔案中德資料逐行讀入到模式空間與模式比對,符合就處理不符合就丟棄)

     2.sed [options] ‘AddressCommand‘ file ...

    -n: 靜默模式,不再預設顯示模式空間中的內容

         -i: 直接修改原檔案

         -e SCRIPT -e SCRIPT:可以同時執行多個指令碼

         -f /PATH/TO/SED_SCRIPT

   sed -f /path/to/scripts  file

         -r: 表示使用擴充Regex      

       Address:

         1、StartLine,EndLine

        比如1,100

        $:最後一行

         2、/RegExp/

        /^root/

         3、/pattern1/,/pattern2/

        第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,這中間的所有行

         4、LineNumber

        指定的行

         5、StartLine, +N

        從startLine開始,向後的N行

        

        Command:

        d: 刪除合格行

        p: 顯示合格行

        a \string: 在指定的行後面追加新行,內容為string

    \n:可以用於換行

              i \string: 在指定的行前面添加新行,內容為string

        r FILE: 將指定的檔案的內容添加至合格行處

        w FILE: 將地址指定的範圍內的行另存至指定的檔案中

              s/pattern/string/修飾符: 尋找並替換,預設只替換每行中第一次被模式比對到的字串

   加修飾符

      g: 全域替換

      i: 忽略字元大小寫

        s///: s###, [email protected]@@

   \(\), \1, \2

   l..e: like-->liker

 love-->lover  

 like-->Like

 love-->Love

   &: 參考模式匹配整個串

         sed ‘1,2d‘ /etc/passwd 刪除檔案中的指定行

sed練習:

1、刪除/etc/grub.conf檔案中行首的空白符

# sed -r ‘[email protected]^[[:spapce:]][email protected]@g‘ /etc/grub.conf

2、替換/etc/inittab檔案中"id:3:initdefault:"一行中的數字為5

# sed ‘[email protected]\(id:\)[0-9]\(:initdefault:\)@\15\[email protected]‘ /etc/inittab

3、刪除/etc/inittab檔案中的空白行

# sed ‘/^$/d‘ /etc/inittab

4、刪除/etc/inittab檔案中開頭的#號

# sed ‘[email protected]^#@@g‘ /etc/inittab

5、刪除某檔案中開頭的#號及後面的空白字元,但要求#號後面必須有空白字元

# sed -r ‘[email protected]^#[[:space:]][email protected]@g‘ /etc/inittab

6、刪除某檔案中以空白字元後面跟#類的行中的開頭的空白字元及#

# sed -r ‘[email protected]^[[:space:]]+#@@g‘ /etc/inittab

7、取出一個檔案路徑的目錄名稱

# echo "/etc/rc.d/" | sed -r ‘[email protected]^(/.*/)[^/]+/[email protected]\[email protected]‘

基名:

# echo "/etc/rc.d/" | sed -r ‘[email protected]^/.*/([^/]+)/[email protected]\[email protected]‘






本文出自 “珞辰的部落格” 部落格,請務必保留此出處http://luochen2015.blog.51cto.com/9772274/1636971

shell編程---檔案測試及特殊變數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.