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
賦值2
、3
,輸出結果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...