<LINUX >bash shell 入門 --linux學習筆記

來源:互聯網
上載者:User

標籤:c   a   int   strong   檔案   2014   

首先說下我個人對於shell的理解,我覺得shell是一種通過各種控制語句將linux命令進行集合實現批處理的一種指令碼語言.

shell編程入門其實很簡單,文法知識並不多,但是進階shell編程就很難,因為shell是使用者和linux之間的橋樑,要編寫高品質的shell指令碼,就需要使用者對linux有很全面的認識.

這裡我們只分析shell指令碼的文法知識,如想透徹的學習linux還需多努力.

shell結構

      1.#!指定執行指令碼的shell

      2.#注釋行

      3.命令和控制結構

建立shell程式的步驟:

      1.建立一個包含命令和控制結構的檔案

      2.修改這個檔案的許可權使它可以執行,使用chmod u+x

      3.執行 ./example 或者sh exmaple

如下為一個簡單的shell指令碼,顯示目前的目錄路徑,和子檔案

     demo.sh

           #!/bin/sh

          #we use pwd to print the directory path

          /bin/pwd

          #we use ls to print the children directories

          /bin/ls

變數

      shell變數有兩種

           1.臨時變數

                 只在當前檔案中起作用。包括使用者自訂變數和位置變數

           2.永久變數

                 永久變數又叫環境變數,其值不隨指令碼的結束而消失

      設定變數的時候直接使用變數名加賦值即可如date=`date`;而在使用該變數的時候加上$,如echo $date

       /~example.sh

         date=`date`

         echo $date

       輸出:Tue May 20 07:48:45 EDT 2014

           使用set命令可以列出所有的環境變數

             #set | less

          使用unset可以清除已經定義的變數

           如:#unset date

    位置變數

         類似於c語言的agrc和argv

          例如:

           ls file1 file2 file3

           $0 這個程式的檔案名稱 ls

           $n 這個程式的第n個參數 n >=1

      特殊變數

            $*這個程式所有的參數

            $#這個程式的參數個數

            $$這個程式的PID

            $!執行上一個後台命令的PID

            $?執行上一個命令的傳回值

     輸入輸出操作

         read myname     // 從鍵盤擷取姓名

         echo $myname  //輸出姓名

         當然也可以一次讀入多個資料,和輸出多個資料

          read  p1 p2 p3

          echo $p1 $2 $p3

運算操作

    expr命令: 對整數型變數進行算術運算

       例如:expr 3 + 5 //數字和運算子之間加上空格,不然會輸出 3+5 而不是想要的8

                  expr 5 – 2

                  expr 5 \* 2 //需要對*進行轉義

                  expr 5 / 2

       在shell運算中沒有小括弧的定義,如果在多項式中想指定運算步驟應該用expr代替括弧

           如      expr `expr 5 – 2 ` \* 2 //其中`為鍵盤坐上角的符號不是單引號!!!!

  變數測試語句

         用於測試變數是否相等,是否為空白,檔案類型等

         格式 :test 測試條件 //測試範圍:整數,字串,檔案

         字串測試:

               test str1=str2   //測試兩字串是否相等

               test str1=str2

               test str1             //測試字串是否不為空白

               test –n str1       //同上

                test –z str1       //測試字串是否為空白

         整數測試:

                test intl –eq  int2  //測試相等

                test int1 –ge int2  //測試int1是否大於等於

                 test int1 –gt  int 2 //大於

                  test int1 –le  int     //小於等於

                   test int1 –lt int2     //小於

                   test int1 –ne int2 //測試是否不相等

          檔案測試:

                 test –d file       //是否為目錄

                 test –f file        //是否為常規檔案

                 test –x file       //是否為可執行檔

                 test  -r file        //可讀

                  test –w file      //可寫

                  test –a file      //檔案是否存在

                  test –s file      //檔案的大小是否為0

          變數測試語句可以[]進行簡化

           test –d $1 等價於 [ –d $1 ] //之間有空格

條件控制語句

       1.if 

         結構:

           if  test –d $1 then

               //TODO

           elif  條件2  then  //else if 

               //TODO

            fi

      2.exit語句

           退出程式執行,並返回一個返回碼,返回碼為0表示正常退出,非0表示非正常退出

      3.多個條件的聯合

            -a : 邏輯與,僅當兩個條件都成立時,結果為真

            -o:邏輯或,兩個條件只要有一個成立,結果為真

            如  [ –w $file –a –r $file ] //判斷檔案是否可讀可寫

      4.for …done 語句

            for 變數 in 名字表 //名字表類似於數組,只是shell中沒有數組,所以需要全部羅列 之間用空格隔開

            do

                   命令列表

            done

     5.select 

            select 變數 in 關鍵字

            do

                  命令列表

            done

           select 把關鍵字中的每一項做成類似表單,以互動的方式執行do和done之間的命令

       6.case…esac語句

             case 變數 in

                   字串1)  命令列表1 ;;

                   字串2)  命令列表2  ;;

              esac

       7.while

            while 條件

             do

                       命令

              done

        8.shift指令

           每執行一次,參數序列順序左移一個位置,$#的值減1

           用於分別處理每個參數,移出去的參數不在可用

   函數的應用

      函數的定義

          函數名()

         {

                 命令序列

         }

    函數的調用:

       函數名 參數1 參數2 。。。

  指令碼的調試

  sh –x script

         執行指令碼並顯示所有變數的值

  sh –n script

         執行指令碼只檢查語法錯誤,將返回所有的語法錯誤

相關文章

聯繫我們

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