Linux中if語句用法總結

2021-09-23 14:06:55 字數 4352 閱讀 1388

shell中的邏輯判斷一般用if語句,if語句中通常用來表示條件測試,可以比較字串、判斷檔案是否存等。備註:[ ] 中表示式兩邊與括號之間要有空格

if … else 語句常用基本的語法如下:

1.if ;then fi語句

建乙個測試指令碼test.sh如下

#!/bin/bash

a=$1

b=$2if[

$a == $b

];then

echo

"a and b is equal"

fiif[$a

!= $b

];then

echo

"a and b is not equal"

fi

執行命令sh test.sh 2 3給引數$1和$2賦值2和3,輸出結果a and b is not equal

不加else的if語句表示式成立執行then後面的語句,表示式不成立則不執行任何命令。

2.if ;then else fi語句

if

[ expression ]

;then

executed statement_expression_true

else

executed statement_expression_false

fi

備註:expression表示式 和方括號[ ]之間必須有空格,否則會有語法錯誤。如果表示式成立,then後面的語句將會被執行;如果表示式不成立則執行else後面的語句。

3.if ;then elif ; then else fi語句,哪個expression表示式成立則執行哪個then後面的語句,否則執行else後面的語句。

if

[ expression1 ]

;then

executed statement_expression1_true

elif [ expression2 ]

;then

executed statement_expression2_true

else

executed statement_expression1_2_false

fi

#!/bin/bash

a=$1

b=$2if[

$a == $b

];then

echo

"a and b is equal"

elif [

$a-lt$b]

;then

echo

"a less than b"

else

echo

"a bigger than b"

fi

例如建個測試指令碼test.sh如上,執行命令sh test.sh 2 3給引數$1$2賦值23,輸出結果a less than b;執行sh test.sh 3 2結果為a bigger then b

#!/bin/bash

a=$1

b=$2if[

$a == $b

];then

echo

"a and b is equal"

elseif[

$a-lt$b]

;then

echo

"a less than b"

else

echo

"a bigger than b"

fifi

上述指令碼,if … else 語句巢狀使用的效果與if … elif … fi 語句效果類似,但是if … elif … fi 語句要精簡些

4.if … else 語句也經常與 test 命令結合使用,test 命令用於檢查某個條件是否成立,與方括號[ ]功能類似

#!/bin/bash

a=$1

b=$2

if test $a == $b

;then

echo

"a and b is equal"

else

echo

"a and b is not equal"

fi

例如上述指令碼,其中if test $a == $b;if [ $a == $b ];效果一樣。

5.if語句常用命令選項有:

==or=: 等於

-eq: 等於

-ne:不等於

-gt:大於

-ge:大於等於

-lt:小於

-le:小於等於

命令選項

描述if [ a = b ]

a與b是否相等 (a、b是數值)

if [ a -ge b ]

a 是否大於等於 b

if [ a -gt b ]

a 是否大於 b

if [ a -le b ]

a 是否小於等於 b

if [ a -lt b ]

a 是否小於 b

if [ a -ne b ]

a 是否不等於 b

if [ str1 = str2 ]

str1是否與str2相同(str1、str2是字串)

if [ str1 != str2 ]

str1是否與str2不同

if [ str1 < str2 ]

str1是否小於str2

if [ str1 > str2 ]

str1是否da於str2

if [ -n str ]

判斷str長度是否非零

if [ -z str ]

str長度是否為0

if [ -d file ]

判斷file是否為乙個目錄

if [ -e file ]

判斷file是否存在

if [ -f file ]

檢查file檔案是否存在

if [ -r file ]

判斷file是否存在並可讀

if [ -s file ]

判斷file是否存在並非空

if [ -w file ]

判斷file是否存在並可寫

if [ -x file ]

判斷file是否存在並可執行

例如下面指令碼判斷壓縮包檔案是否存在

#!/bin/bash 

day=

`date -d yesterday +%y%m%d`

file=access_$.log.tgz

work_dir= /data/nginx/logs

if[ -f $/$];

then

echo

"ok"

else

echo

"$ backup fail"

> error.log

fi

例如判斷日誌檔案中是否存在error

#!/bin/bash

work_dir=/home/hadoop/ktl_wks

log_date=`date +

%y%m%d`

log_time=`date +

%h%m%s`

logfile=$

/log/$$_start.log

#檢查執行是否正常

err_log=`cat $

| grep 'error'

| awk -f ' '

''`if

[-z $

];then

echo `date +

'%y-%m-%d %h:%m:%s'`" 日誌檢查結束,檢查結果為:正常." >> $ 2>&1

else

echo `date +

'%y-%m-%d %h:%m:%s'`" 日誌檢查結束,檢查結果為:發現異常!!" >> $ 2>&1

fi

python中的with語句用法總結

class kirin def test self print 輸出test def enter self print 執行了enter語句 切記 這裡的retur返回的值會賦值給with表示式as後的變數識別符號!如果沒返回具體值,那as後面的變數值為none return self def ex...

MySQL之alter語句用法總結

mysql之alter語句用法總結 1 刪除列 alter table 表名字 drop 列名稱 2 增加列 alter table 表名字 add 列名稱 int not null comment 注釋說明 3 修改列的型別資訊 alter table 表名字 change 列名稱 新列名稱 這裡...

MySQL之alter語句用法總結

1 刪除列 alter table 表名字 drop 列名稱 2 增加列 alter table 表名字 add 列名稱 int not null comment 注釋說明 3 修改列的型別資訊 alter table 表名字 change 列名稱 新列名稱 這裡可以用和原來列同名即可 bigint...