shell基礎複習筆記

變量的設置shell

   以等號鏈接,等號兩邊不能有空格數組

   變量名首個字符必須是英文,可使用下劃線,不能使用標點符號,不能使用bash裏的關鍵字bash

   可使用轉義字符\將特殊符號(如Enter、$、空格、!等)變成通常字符函數

  關於單引號,雙引號的說明測試

    單引號裏的任何字符都會原樣輸出,單引號裏的變量是無效的,單引號中不能再出現單引號spa

    雙引號裏能夠出現轉義字符,雙引號中不能再出現雙引號進程

變量的顯示字符串

echo ${變量} 或 echo $變量qt

eg:io

path=/usr/local

echo ${path} 或 echo $path

 

shell的特殊變量

   $$   當前shell進程ID,就是這個腳本的pid

   $0   當前文件名

   $n   去傳遞給腳本的參數,n是幾就取第幾個參數

   $#   取參數的個數

   $@  取全部參數,被雙引號「」包含時,與$*稍有不一樣

   $*   取全部參數

   $?   最後命令的退出狀態,0表示沒有錯誤,其餘任何值代表有錯誤

 

shell的算數運算

   + 加

   -  減

   *  乘

   /   除

   % 取餘

   eg:i=$((5-2))  i的值爲3

          echo $(($a+$b))

          echo $(($a-$b))

          echo $(($a*$b))

          echo $(($a/$b))

          echo $(($a%$b))

 

shell關係運算符

  關係運算符

   -eq  檢測兩個數是否相等,相等返回true

   -ne  檢測兩個數是否相等,不相等返回true

   -qt  檢測左邊的數是否大於右邊的數,若是是,返回true

   -lt   檢測左邊的數是否小於右邊的數,若是是,返回true

   -ge  檢測左邊的數是否大於等於右邊的數,若是是,返回true

   -qg  檢測左邊的數是否小於等於右邊的數,若是是,返回true

 

  布爾運算符

 

   !  非,表達式爲true則返回false,不然返回true

   -o  或運算,有一個表達式爲true,返回true

   -a  與運算,兩個表達式都爲true才返回true

 

  字符串運算符

   ==  檢測兩個字符串是否相等,相等返回true

   !=  檢測兩個字符串是否相等,不相等返回true

   -z     檢測字符串長度是否爲0,爲0返回true

   -n     檢測字符串長度是否不爲0,不爲0返回true

    str    檢測字符串是否爲空,不爲空返回true

 

  文件測試運算符列表

    -d file 檢測文件是不是目錄,若是是,返回true

    -f file  檢測文件是不是普通文件(既不是目錄,也不是設備文件),若是是,則返回true

    -w file 檢測文件是否可寫,若是是,則返回true

    -x file  檢測文件是否可執行,若是是,則返回true

    -s file  檢測文件是否爲空(文件大小是否大於0),部位空返回true

    -e file  檢測文件(包括目錄)是否存在,若是是,返回true

 

shell註釋

  #開頭的就是註釋,shell中沒有多行註釋,只能每一行加一個#

 

shell字符串的操做

  字符串定義能夠用雙引號、單引號,也能夠什麼都不用

    eg:a=test

          a="test"

          a='test'

  字符串拼接,直接把一個字符串跟到另外一個字符串後面便可

    eg:name=emily

          say="hello,$name!"

          say="hello,"$name"!"

          say=hello,$name!

  獲取字符串長度,使用#

    eg:str=studyshell

          echo ${#str}

  獲取字符串的某個元素

    eg:str="shell is a easy language"

          echo ${str:2:4}  #下標是從0開始

          結果爲:ell

 

shell數組操做

  定義數組

    在Shell中,用括號來表示數組,數組元素用「空格」符號分隔開,不像其餘語言中用逗號分隔,shell中只支持一維數組,數組的下標能夠不連續

    eg:array=(value1 value2 value4)

    也能夠經過下標賦值的方式定義一個數組

    eg:array[3]=2    array[5]=test

    數組的取值 ${數組名字[下標]}

     eg:${array[1]}

     獲取數組全部元素

     eg:${array[*]} 或者 ${array[@]}

    獲取數組長度

    eg:${#array[*]}

 

shell的if判斷

  if ... fi

  if ... else ... fi

  if ... elif ... else ... fi

   語法以下:

     if [ 條件表達式 ]

     then 命令

     else

     命令

     fi

   

     if [ 條件表達式一 ]

     then 命令

     elif [條件表達式二]

     then

     命令

     else

      命令

     fi

 

shell的case判斷

  case $變量名稱 in

  變量值1)

     命令

  ;;

  變量值2)

      命令

  ;;

  *)

     命令

  ;;

  esac

 

shell的for循環

  for 變量 in 列表

  do

    命令

  done

 

shell的while循環

  while 條件

  do

   命令

  done

 

shell的函數

function 函數名( )

   {

           命令表

           return xx

   }

  函數應先定義,後使用

  調用函數時,直接利用函數名,如showfile,沒必要帶圓括號

  shell腳本與函數間的參數傳遞可利用位置參數和變量直接傳遞

  一般,函數中的最後一個命令執行以後,就退出被調函數。也可利用return命令當即退出函數,其語法格式是:return [ n ]

相關文章
相關標籤/搜索