shell中的條件判斷、參數以及變量替換


文章轉自:

http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html

一、test命令

  test命令是shell內部命令,它計算作為其參數的表達式是真還是假。

  如果表達式為真,則test返回0(注意與C語言0表示false不同),如果表達式為假,返回非0。

  shell提供了另外一個調用test命令的方式,就是用方括號[]來代替單詞test。

  調用test命令的格式為:

    test expr1 opr expr2 或是 [ expr1 opr expr2 ]

    test opr expr1 或是 [ opr expr1 ]

  (注意方括號與表達式之間的空格必須存在

二、邏輯運算符

  -a  expr1 -a expr2  邏輯與

  -o  expr1 -o expr2  邏輯或

  !  !expr1      邏輯非

三、數值判斷

  -eq  num1 -eq num2  是否相等

  -ne  num1 -ne num2  是否不相等

  -gt  num1 -gt num2  是否大於

  -ge  num1 -ge num2  是否大於等於

  -lt  num1 -lt num2  是否小於

  -le  num1 -le num2  是否小於等於

四、字符串判斷

  =  str1 = str2  字符串是否相等

  !=  str1 != str2  字符串是否不等

  -n  -n str1    字符串長度是否不等於0

  -z  -z str2    字符串長度是否等於0

五、文件判斷

  -r  -r filename  文件是否存在且可讀

  -w  -w filename  文件是否存在且可寫

  -s  -s filename  文件是否存在且長度非0

  -f  -f filename  文件是否存在且是普通文件

  -d  -d filename  文件是否存在且是一個目錄

六、命令行參數/位置變量

  $0  腳本的名字

  $1, $2, ..., $9  腳本第1個到第9個命令行參數

  $#  命令行參數的個數

  $@ 或是 $*  所有命令行參數

  $?  最后一條命令的退出狀態

  $$  正在執行進程的ID(PID)

  給位置變量賦值:

  set One Two Three

  echo $1 $2 $3

  結果顯示:One Two Three

  shift命令:

    這條命令可以對位置參數進行移動,每次調用都會導致:$1=$2、$2=$3、$3=$4....

    以下代碼可以打印出所有的參數

    while [ -n "$1" ]

    do

      echo $1

      shift

    done

七、

  當在對變量進行判斷時最好將變量用雙引號括起來,這樣可以避免參數包含空格或是TAB帶來的問題。

  如:”$HOME“、"$#"

八、變量替換(賦值)

  shell提供了變量替換功能,使用戶能夠檢查變量的值並根據選項改變它的值。

  $variable    保存在variable中的值

  ${variable}    保存在variable中的值

  ${variable:-string}  如果variable的值非空,則值為variable,否則值為string

  ${variable:+string}  如果variable的值非空,則值為string,否則值為空

  ${variable:=string}  如果variable的值非空,則值為variable,否則值為string且variable的值設置為string

  ${variable:?string}  如果variable的值非空,則值為variable,否則顯示string並退出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM