bash shell 入門 --linux學習筆記

首先說下我我的對於shell的理解,我以爲shell是一種經過各類控制語句將linux命令進行集合實現批處理的一種腳本語言.linux

shell編程入門其實很簡單,語法知識並很少,可是高級shell編程就很難,由於shell是用戶和linux之間的橋樑,要編寫高質量的shell腳本,就須要用戶對linux有很全面的認識.shell

這裏咱們只分析shell腳本的語法知識,如想透徹的學習linux還需多努力.編程

shell結構數組

      1.#!指定執行腳本的shellless

      2.#註釋行函數

      3.命令和控制結構學習

建立shell程序的步驟:測試

      1.建立一個包含命令和控制結構的文件調試

      2.修改這個文件的權限使它能夠執行,使用chmod u+xip

      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

         執行腳本只檢查語法錯誤,將返回全部的語法錯誤

相關文章
相關標籤/搜索