Shell if語句用法小結

2021-07-14 19:33:27 字數 2098 閱讀 7936

在shell程式設計中,常常會用if來判斷條件,從而控制程式的流程分支。if語句是非常簡單,跟其他語言差不多,不過,在shell中,要注意一些細節是很有必要的。

在這裡,不給出if的基本語法格式,網上搜尋下,很多的。這裡給出個簡單的例子:

#! /bin/sh -  

name=`basename $0 .sh`  

if [ $# -ne 2 -a $# -ne 3 ]; then  

echo "usage: $name value1 value2"  

echo "       $name value1 value2 value3 "  

exit 1  

fi  

if [ $# -eq 2 ]; then  

echo "two args: $1, $2"  

else  

echo "three args: $1 $2 $3"  

fi  

if [ $# -eq 2 ]; then  

if [ $1 -gt $2 ]; then  

echo " $1 > $2"  

elif [ $1 -lt $2 ]; then  

echo " $1 < $2 "  

else  

echo "$1 = $2"  

fi  

else  

if [ $1 -ge $2 -a $1 -ge $3 ]; then  

echo "$1 >=$2 , $1 >=$3"  

elif [ $1 -ge $2 -a $1 -lt $3 ]; then  

echo "$1 >=$2 ,$1 < $3"  

elif [ $1 -lt $2 -a $1 -ge $3 ]; then  

echo "$1 < $2, $1 >= $3"  

else  

echo "$1 < $2, $1 < $3"  

fi  

fi  

exit 0  

將上面的內容儲存為檔案儲存為if.sh,並給檔案賦予可執行許可權。然後通過呼叫該shell。該shell指令碼主要是通過if語句,對不同的引數進行判斷輸出。上面的指令碼基本囊括了常用的if then if else  if elif 。if語句中,主要需要注意以下幾點:

1、if 與[ 之間必須有空格

2、[ ]與判斷條件之間也必須有空格

3、]與; 之間不能有空格

[日期:2012-02-03]

[字型:大

中小]

1、數值

格式:

test "num1" opr "num2"

[ "num1" opr "num2" ]

opr 取值:

相等:-eq

不等:-ne

大於:-gt

小於:-lt  【l是字母l的小寫】

小於等於:-le

大於等於:-ge

2、字串

格式:

[ str1 opr str2]

[ opr str ]

opr取值:

相等:=

不等:!=

空串:-z

非空串:-n

3、檔案

格式:

[ opr file ]

opr取值:

目錄: -d

檔案: -f

可讀: -r

可寫: -w

可執行: -x

檔案非空: -s

4、邏輯運算子

邏輯與: -a          格式: [ condition1 -a condition2 ]

邏輯或: -o          格式: [ condition1 -o condition2 ]

邏輯否: !             格式: [ ! condition ]

0

給主人留下些什麼吧!~~

shell if 條件語句解析

1.判斷檔案是不是存在 shell判斷檔案,目錄是否存在或者具有許可權 這裡的 x 引數判斷 mypath是否存在並且是否具有可執行許可權 if x mypath then mkdir mypath fi 這裡的 d 引數判斷 mypath是否存在 if d mypath then mkdir my...

shell if語句 運算子

if 表示式 then 語句else 語句fi 比如 bin bash num1 100 num2 200 if num1 num2 then echo num1 num2 else echo num1注意 if 後面不需要 只需要 語句一定要有tab鍵輸入,不能是空格。空格在shell語法中不能隨...

Shell if語句詳解(概念篇)

一,簡介 str1 str2 當兩個串有相同內容 長度時為真 str1 str2 當串str1和str2不等時為真 n str1 當串的長度大於0時為真 串非空 z str1 當串的長度為0時為真 空串 str1 當串str1為非空時為真 2006.01.23 2005.03.01 echo day...