Linux下shell指令碼判斷檔案相關屬性

2022-07-03 12:30:14 字數 4769 閱讀 9909

先寫一些基本語法:

1、字串判斷

str1 =str2      當兩個串有相同內容、長度時為真

str1 !=str2      當串str1和str2不等時為真

-n str1        當串的長度大於0時為真(串非空)

-z str1        當串的長度為0時為真(空串)

str1         當串str1為非空時為真

2、數字的判斷

int1 -eq int2    兩數相等為真

int1 -ne int2    兩數不等為真

int1 -gt int2    int1大於int2為真

int1 -ge int2    int1大於等於int2為真

int1 -lt int2    int1小於int2為真

int1 -le int2    int1小於等於int2為真

3 檔案的判斷

-r file     使用者可讀為真

-w file     使用者可寫為真

-x file     使用者可執行為真

-f file     檔案為正規檔案為真

-d file     檔案為目錄為真

-c file     檔案為字元特殊檔案為真

-b file     檔案為塊特殊檔案為真

-s file     檔案大小非0時為真

-t file     當檔案描述符(預設為1)指定的裝置為終端時為真

4 複雜邏輯判斷

-a         與

-o        或

!        非

下面是一些使用例項:

#這裡的-x 引數判斷$mypath是否存在並且是否具有可執行許可權

if [ ! -x "

$mypath

"]; then

mkdir

"$mypath

"fi

#這裡的-d 引數判斷$mypath是否存在

if [ ! -d "

$mypath

"]; then

mkdir

"$mypath

"fi

#這裡的-f引數判斷$myfile是否存在

if [ ! -f "

$myfile

"]; then

touch

"$myfile

"fi

#其他引數還有-n,-n是判斷乙個變數是否是否有值

if [ ! -n "

$myvar

"]; then

echo

"$myvar is empty

"exit

0fi

#兩個變數判斷是否相等

if [ "

$var1

" == "

$var2

"]; then

echo

'$var1 eq $var2

'else

echo

'$var1 not eq $var2'fi

iflist then

dosomething here

elif list then

doanother thing here

else

do something else

here

fi

ex1:

#!/bin/sh

system=`uname -s` #獲取作業系統型別,我本地是linux

if [ $system = "

linux

"] ; then #如果是linux的話列印linux字串

echo

"linux

"elif [ $system = "

freebsd

"] ; then

echo

"freebsd

"elif [ $system = "

solaris

"] ; then

echo

"solaris

"else

echo

"what?

"fi #ifend

基本上和其他指令碼語言一樣。沒有太大區別。不過值得注意的是。裡面的條件判斷。

先寫一些基本語法:

1、字串判斷

str1 =str2      當兩個串有相同內容、長度時為真

str1 !=str2      當串str1和str2不等時為真

-n str1        當串的長度大於0時為真(串非空)

-z str1        當串的長度為0時為真(空串)

str1         當串str1為非空時為真

2、數字的判斷

int1 -eq int2    兩數相等為真

int1 -ne int2    兩數不等為真

int1 -gt int2    int1大於int2為真

int1 -ge int2    int1大於等於int2為真

int1 -lt int2    int1小於int2為真

int1 -le int2    int1小於等於int2為真

3 檔案的判斷

-r file     使用者可讀為真

-w file     使用者可寫為真

-x file     使用者可執行為真

-f file     檔案為正規檔案為真

-d file     檔案為目錄為真

-c file     檔案為字元特殊檔案為真

-b file     檔案為塊特殊檔案為真

-s file     檔案大小非0時為真

-t file     當檔案描述符(預設為1)指定的裝置為終端時為真

4 複雜邏輯判斷

-a         與

-o        或

!        非

下面是一些使用例項:

#這裡的-x 引數判斷$mypath是否存在並且是否具有可執行許可權

if [ ! -x "

$mypath

"]; then

mkdir

"$mypath

"fi

#這裡的-d 引數判斷$mypath是否存在

if [ ! -d "

$mypath

"]; then

mkdir

"$mypath

"fi

#這裡的-f引數判斷$myfile是否存在

if [ ! -f "

$myfile

"]; then

touch

"$myfile

"fi

#其他引數還有-n,-n是判斷乙個變數是否是否有值

if [ ! -n "

$myvar

"]; then

echo

"$myvar is empty

"exit

0fi

#兩個變數判斷是否相等

if [ "

$var1

" == "

$var2

"]; then

echo

'$var1 eq $var2

'else

echo

'$var1 not eq $var2'fi

iflist then

dosomething here

elif list then

doanother thing here

else

do something else

here

fi

ex1:

#!/bin/sh

system=`uname -s` #獲取作業系統型別,我本地是linux

if [ $system = "

linux

"] ; then #如果是linux的話列印linux字串

echo

"linux

"elif [ $system = "

freebsd

"] ; then

echo

"freebsd

"elif [ $system = "

solaris

"] ; then

echo

"solaris

"else

echo

"what?

"fi #ifend

基本上和其他指令碼語言一樣。沒有太大區別。不過值得注意的是。裡面的條件判斷。

linux下shell指令碼的if判斷

bash中如何實現條件判斷?條件測試型別 整數測試 字元測試 檔案測試 一 條件測試的表示式 expression 括號兩端必須要有空格 expression 括號兩端必須要有空格 test expression 組合測試條件 二 整數比較 命令間的邏輯關係 第乙個條件為假 第二個條件不用在判斷,最...

Linux下Shell指令碼

shell 指令碼 shell script 是一種為 shell 編寫的指令碼程式。從業界所說的 shell 通常都是指 shell 指令碼,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。由於習慣的原因,簡潔起見,本文出現的 shell程式設計 都是指 shell ...

shell指令碼判斷

1.test測試命令 test命令用於檢查某個條件是否成立,它可以進行數值 字元和檔案三個方面的測試,其測試符和相應的功能分別如下 1 數值測試 eq 等於則為真 ne 不等於則為真 gt 大於則為真 ge 大於等於則為真 lt 小於則為真 le 小於等於則為真 2 字串測試 等於則為真 不相等則為...