1. 程式人生 > >shell中if語句的格式以及使用

shell中if語句的格式以及使用

比較兩個字串是否相等的辦法是:

    if [ "$test"x = "test"x ]; then

    這裡的關鍵有幾點:

    1 使用單個等號

    2 注意到等號兩邊各有一個空格:這是unix shell的要求

    3 注意到"$test"x最後的x,這是特意安排的,因為當$test為空的時候,上面的表示式就變成了x = testx,顯然是不相等的。而如果沒有這個x,表示式就會報錯:[: =: unary operator expected

    二元比較操作符,比較變數或者比較數字.注意數字與字串的區別.

    整數比較

    -eq 等於,如:if [ "$a" -eq "$b" ]

    -ne 不等於,如:if [ "$a" -ne "$b" ]

    -gt 大於,如:if [ "$a" -gt "$b" ]

    -ge 大於等於,如:if [ "$a" -ge "$b" ]

    -lt 小於,如:if [ "$a" -lt "$b" ]

    -le 小於等於,如:if [ "$a" -le "$b" ]

     大於(需要雙括號),如:(("$a" > "$b"))

    >= 大於等於(需要雙括號),如:(("$a" >= "$b"))

    小資料比較可使用AWK

    字串比較

    = 等於,如:if [ "$a" = "$b" ]

    == 等於,如:if [ "$a" == "$b" ],與=等價

     注意:==的功能在[[]]和[]中的行為是不同的,如下:

     1 [[ $a == z* ]] # 如果$a以"z"開頭(模式匹配)那麼將為true

     2 [[ $a == "z*" ]] # 如果$a等於z*(字元匹配),那麼結果為true

     3

     4 [ $a == z* ] # File globbing 和word splitting將會發生

     5 [ "$a" == "z*" ] # 如果$a等於z*(字元匹配),那麼結果為true

     一點解釋,關於File globbing是一種關於檔案的速記法,比如"*.c"就是,再如~也是.

     但是file globbing並不是嚴格的正則表示式,雖然絕大多數情況下結構比較像.

    != 不等於,如:if [ "$a" != "$b" ]

     這個操作符將在[[]]結構中使用模式匹配.

     大於,在ASCII字母順序下.如:

     if [[ "$a" > "$b" ]]

     if [ "$a" \> "$b" ]

     注意:在[]結構中">"需要被轉義.

     具體參考Example 26-11來檢視這個操作符應用的例子.

    -z 字串為"null".就是長度為0.

    -n 字串不為"null"

    注意:

     使用-n在[]結構中測試必須要用""把變數引起來.使用一個未被""的字串來使用! -z

     或者就是未用""引用的字串本身,放到[]結構中。雖然一般情況下可

     以工作,但這是不安全的.習慣於使用""來測試字串是一種好習慣.

if判斷式
if [ 條件判斷一 ] && (||) [ 條件判斷二 ]; then
elif [ 條件判斷三 ] && (||) [ 條件判斷四 ]; then
else
   執行第三段內容程式
fi

例如:

[email protected]:~# a=0
[email protected]:~# b=0
[email protected]:~# c=5         
[email protected]:~# if [ $a = 0 -a $b = 0 ]&&[ $c != 0 ]; then
> echo success
> fi
success

if 使用的表示式

Primary 意義
[ -a 檔案 ] 如果檔案存在為真。
[ -b 檔案 ] 如果 檔案 存在 而且 是一個 塊-特殊 檔案為真。
[ -c 檔案 ] 為真 如果 檔案 存在 而且 是一個 字-特殊 檔案。 [ -d 檔案 ] 為真 如果 檔案 存在 而且 是一個 目錄。
[ -e 檔案 ] 為真 如果 檔案 存在。
[ -f 檔案 ] 為真 如果 檔案 存在 而且 是一個 普通 檔案。
[ -g 檔案 ] 為真 如果 檔案 存在 而且 已經設定了他的 SGID 位。
[ -h 檔案 ] 為真 如果 檔案 存在 而且 是一個 符號連線。
[ -k 檔案 ] 為真 如果 檔案 存在 而且 他的粘住位已經設定。
[ -p 檔案 ] 為真 如果 檔案 存在 而且 是一個 已經命名的管道 (F 如果O)。
[ -r 檔案 ] 為真 如果 檔案 存在 而且 是可讀的。
[ -s 檔案 ] 為真 如果 檔案 存在 而且 比零位元組大。
[ -t FD ] 為真 如果 檔案 檔案描述符已經開啟 而且 指向一個終端。
[ -u 檔案 ] 為真 如果 檔案 存在 而且 已經設定了他的 SUID (set user ID)位。
[ -w 檔案 ] 為真 如果 檔案 為真 如果 檔案 存在 而且 是可寫的。
[ -x 檔案 ] 為真 如果 檔案 存在 而且 是可執行的。
[ -O 檔案 ] 為真 如果 檔案 存在 而且 屬於有效使用者ID。
[ -G 檔案 ] 為真 如果 檔案 存在 而且 屬於有效組ID。
[ -L 檔案 ] 為真 如果 檔案 存在 而且 是一個 符號連線。
[ -N 檔案 ] 為真 如果 檔案 存在 而且 has been mod 如果ied since it was last read。
[ -S 檔案 ] 為真 如果 檔案 存在 而且 是一個 socket。
[ 檔案1 -nt 檔案2 ] 為真 如果 檔案1 has been changed more recently than 檔案2, or 如果
檔案1 存在 而且
檔案2 does not。
[ 檔案1 -ot 檔案2 ] 為真 如果 檔案1 比 檔案2 舊, 或者 檔案2 存在而且 檔案1 不存在。
[ 檔案1 -ef 檔案2 ] 為真 如果 檔案1 而且 檔案2 refer to the same device 而且 inode
numbers。
[ -o 選項名 ] 為真 如果 shell 選項 "選項名" 開啟。
[ -z STRING ] 為真 如果 "STRING"的長度是零。
[ -n STRING ] 或者 [ STRING ] 為真 "STRING"的長度是非零值。
[ STRING1 == STRING2 ] 如果兩個字串相等為真。 "=" may be used instead of "==" for
strict POSIX compliance。
[ STRING1 != STRING2 ] 為真 如果 兩兩個字串不相等。
[ STRING1 < STRING2 ] 為真 如果 "STRING1" sorts before "STRING2" lexicographically in the
current locale。
[ STRING1 > STRING2 ] 為真 如果 "STRING1" sorts after "STRING2" lexicographically in the
current locale。
[ ARG1 OP ARG2 ]
"OP" 是 -eq, -ne, -lt, -le, -gt or -ge 其中一個。 These arithmetic binary operators
return 為真 如果 "ARG1" is equal to, not equal to, less than, less than or equal to, greater
than, or greater than or equal to "ARG2", respectively。 "ARG1" 而且 "ARG2" are
integers。
表示式可以藉以下操作符組合起來, listed in decreasing order of precedence:
操作符效果
[ ! EXPR ] 如果EXPR 為假則為真。
[ ( EXPR ) ] 返回EXPR 的值。 這樣可以用來忽略正常的操作符優先順序。 [ 表示式1 -a 表示式2 ] 如果表示式1 而且表示式2 同時為真則為真 。
[ 表示式1 -o 表示式2 ] 如果表示式1 或者表示式2 其中之一為真則為真。 ========================================== shell中變數間接引用: 假設a=b,b=123,如何通過a獲得123呢,通過變數間接引用可以做到:eval a=\$$b (bash版本2中a=${!b}也可以做到)

相關推薦

shellif語句格式以及使用

比較兩個字串是否相等的辦法是:     if [ "$test"x = "test"x ]; then     這裡的關鍵有幾點:     1 使用單個等號     2 注意到等號兩邊各有一個空格:這是unix shell的要求     3 注意到"$test"x最後的x,這是特意安排的,因為當$test為

[shell]shellif語句的使用

don 條件 如何 ood 字符串 pre 評分 string 另一個 轉自:http://lovelace.blog.51cto.com/1028430/1211353 bash中如何實現條件判斷?條件測試類型: 整數測試 字符測試 文件測試 一、條

shellif語句的使用

轉載:https://blog.csdn.net/sunny05296/article/details/65987237 Linux shell if 語法 基本語法: if [ command ]; then 符合該條件執行的語句 fi 2、擴充套件語法: if [ c

shellif判斷語句

file true pan rep then 好的 test 遇到 col if 條件測試類型: 文件測試, 數字測試, 字符串測試 if 語句結構: if ... ; then ....; fi if ... ; then ... ; else ... ; fi

Shellif條件語句的知識和實踐

linux 運維 shell腳本本文主要講解if條件語句在shell的使用場景和示例基本大綱: 1.if條件語句的語法 2.if條件語句多種條件表達式語法 3.單分支if條件語句實踐 4.if條件語句的深入實踐及場景使用一:if條件語句的語法1)單分支結構第一種語法:if

IC數字前端設計開發17 (Shell判斷語句if-z至-d的意思)

[ -a FILE ] 如果 FILE 存在則為真。 [ -b FILE ] 如果 FILE 存在且是一個塊特殊檔案則為真。 [ -c FILE ] 如果 FILE 存在且是一個字特殊檔案則為真。 [ -d FILE ] 如果 FILE 存在且是一個目錄則為真。

linux shell if else以及大於、小於、等於邏輯表示式介紹

比如比較字串、判斷檔案是否存在及是否可讀等,通常用"[]"來表示條件測試。 注意:這裡的空格很重要。要確保方括號的空格。筆者就曾因為空格缺少或位置不對,而浪費好多寶貴的時間。 if ....; then .... elif ....; then .... else ...

bash腳本 if 語句 和 for 語句的用法

if語句和for語句在bash shell腳本中,我們要先了解三種執行順序順序執行 (從左到右,從上到下的執行)選擇執行 (條件滿足或者不滿足的時候,才會執行某段結構)循環執行 (重復執行某段結構)今天所寫的if 就是選擇順序,for就是循環執行在if或者for中不可避免的要使用一些結構,還有一些運算方法,我

linux 下shellif的“-e,-d,-f”的用法

符號鏈接 符號 字符串變量 -s 長度 目錄 != filename bsp 文件表達式-e filename 如果 filename存在,則為真-d filename 如果 filename為目錄,則為真 -f filename 如果 filename為常規文件,則為真-

shellIF的用法介紹

一、語法結構 if [ condition ] then      statements  [elif condition      then statements. 

mysql if語句的使用

Mysql的if既可以作為表示式用,也可在儲存過程中作為流程控制語句使用,如下是做為表示式使用: IF(expr1,expr2,expr3) IF表示式 程式碼如下:如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的

【五】makefileif語句

ifeq ifeq ($(DEBUG), 1) OPTS= -O0 -g else OPTS = -O2 endif ifneq ifneq ($(DEBUG), 1) OPTS = -O2 else OPTS= -O0 -g endif ifde

shell的基本命令以及基本知識

##diff命令## diff命令用於比較兩個檔案的不同,從而生成補丁 vim westos vim westos1 diff westos westos1 ##比較倆個檔案的不同## diff westos westos1 > westos.path ##將we

shell判斷語句

shell中判斷語句 基本語法 [ condition ](注意 condition 前後要有空格) #非空返回 true,可使用$?驗證(0 為 true,>1 為 false) 應用例項 [ hello ] 返回 true [] 返回 false [condition]

Visual C++ 6.0if語句的常見問題

1 # include <stdio.h> 2 int main (void) 3 { 4 if (3 > 2)//如果在第四行加分號的話,編譯的時候就會在第六行出錯 5 printf("你好\n"); 6 else//這是第六行。

linux shell if 條件判斷 -a 到 -z 的意思

[ -a FILE ] 如果 FILE 存在則為真。 [ -b FILE ] 如果 FILE 存在且是一個塊特殊檔案則為真。 [ -c FILE ] 如果 FILE 存在且是一個字特殊檔案則為真。 [ -d FILE ] 如果 FILE 存在且是一個目錄則為真。 [ -e FILE ] 如果 FIL

javascriptif語句的語法與使用

if語句的語法與使用小例子<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title>

shellif做比較

比較兩個字串是否相等的辦法是:     if [ "$test"x = "test"x ]; then     這裡的關鍵有幾點:     1 使用單個等號     2 注意到等號兩邊各有一個空格:這是unix shell的要求     3 注意到"$test"x最後的x,這是特意安排的,因為當$test為

linux 下shellif的“-e,-d,-f”是什麼意思

檔案表示式 -e filename 如果 filename存在,則為真 -d filename 如果 filename為目錄,則為真  -f filename 如果 filename為常規檔案,則為真 -L filename 如果 filename為符號連結,則為真 -r

SHELLIF大於等於小於的表示方法

$# 表示提供到shell指令碼或者函式的引數總數; $1 表示第一個引數。 -ne 表示 不等於 另外: 整數比較 -eq 等於,如:if ["$a" -eq "$b" ] -ne 不等於,如:if ["$a" -ne "$b" ] -gt