第二章 shell程式設計

來源:互聯網
上載者:User

shell是使用者與linux系統間介面的程式,它允許使用者向作業系統輸入需要執行的命令,許多強大的功能都能通過shell實現

1、重新導向

      檔案描述符:0 為一個程式的標準輸入、1為標準輸出、2為標準錯誤輸出

      使用 > file.txt 可以將程式標準輸出重新導向到一個檔案,預設情況下會將該檔案的內容覆蓋

              >>file.txt   則將程式標準輸出追加到file.txt檔案中

     如果想對標準錯誤輸出進行重新導向,則需要把想要重新導向的檔案描述符編號加在 >操作符前面

            $kill -HUP 1234 >killout.txt  2>killerr.txt    //將標準輸出和標準錯誤輸出分別重新導向到不同檔案中

            $kill -l   1234 >killouterr.txt  2>&1   //將標準輸出和標準錯誤輸出都重新導向到同一個檔案中

            $kill -l    1234 >/dev/null  2>&1      //將。。。。重新導向到資源回收筒(丟棄輸出資訊)

    同理,輸入也可以重新導向

            $more <killout.txt

2、摘要

      linux很少利用副檔名來決定檔案的類型

3 、 shell文法:

     變數:字串、數字、環境和參數

     條件:shell中的布爾值

     程式控制:if ,elif , for  ,while ,case

     命令列表

      函數

     shell內建命令

     擷取命令的執行結果

     here文檔

3.1   變數

     在shell中可以通過在變數名前加$符號來訪問它的內容

     $value="Yes Dear"    //如果字串裡包含空格,就必須用引號把他們括起來,此外,等號兩端不能有空格

     $read value    //使用read命令將使用者的輸入賦值給一個變數

     

    一般情況下指令檔中的參數以空白字元分隔(空格,定位字元或分行符號),如果要在一個參數中包含一個或多個空白字元,那麼就必須給參數加上引號。

 $  myvar="hi there"

   >echo $myvar

   >echo "$myvar"      //雙引號,變數會被替換

  >echo '$myvar'       //單引號,變數不被替換

   >echo \$myvar     //   使用\  取消$符號的特殊意義

     hi there

   hi there

   $myvar

   $myvar

環境變數

    $IFS     //輸入欄位分隔字元,當shell讀取輸入的時候,它給出用來分隔單詞的一組字元,通常是空格、定位字元和分行符號

    $0    //shell指令碼的名字

    $#    //傳遞給指令碼的參數個數

Conditions

     [ 與條件之間應當有空格(而給變數賦值的時候。。。)

   if [ -f fred.c ]; then


   set-gid 和set-uid 標誌對shell指令碼程式不起作用,它們只對可執行檔二進位檔案有用


shell在預設情況下認為所有的變數包含的都是字串,foo=43  此處,43當成了字串


until語句 

    until  conditions      //執行下面的statements 知道conditions成立  

    do 

        statements

    done

case 語句  //case將使用第一個匹配的模式,即使後面的模式有更精確的匹配,case不去尋找首選

   case variable in      
pattern [ | pattern] ...) statements;;   //注意是雙分號結尾
pattern [ | pattern] ...) statements;;
...
esac

     注意 * 萬用字元在引號中不起作用

AND列表

statement1 && statement2 && statement3 && ...   //下一個statement只有在前面所有的statement都執行成功的情況下                                                                                   //才執行,&&的作用是檢查前一條命令的傳回值

注意,在一個指令碼程式中執行另外一個指令碼程式要比執行一個函數慢得多








相關文章

聯繫我們

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