日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

shell判断false_Linux脚本shell常用判断式

發布時間:2023/12/10 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell判断false_Linux脚本shell常用判断式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在shell腳本編程中,判斷式是經常被使用的。判斷式的使用有兩種方式,其中一種是使用test,另一種是使用 []。

下面我們通過兩個簡單的例子來看一下這兩種方式如何使用。

例一

# test –e /tmp/a.txt ; echo $?

結果為0

我們看到,上面的結果為0。因為在/tmp目錄下面是存在a.txt這個文件的。當然按照我們在其他編程語言中學到的知識來判斷,這個結果應該是錯誤的。因為如果/tmp/a.txt文件存在的話,那結果應該是true啊,怎么會是0呢? 0代表的不是false嗎?當然這里就涉及到一個特殊的符號 $?,這個符號表示的是上一個命令的回傳值。詳細內容可以查看《Linux中命令回傳值 $? 詳解》。

-e 是判斷指定的文檔名是否存在,要查看結果除了上面在例一中我們介紹的方式,還可以&& 和 || 來查看。

例二

# test –e /tmp/a.txt && echo ‘Yes’ || echo ‘No’

&& 和 || 就是我們在其他的編程語言中的 ‘與’和‘或’。

除了使用test作為判斷式的關鍵字,還可以使用[]來進行判斷。下面我們可以將例一通過[]進行改進。

例三

# [ -e /tmp/a.txt ] ; echo $?

這里需要注意的是,[]這里的兩個邊界要和里面的內容之間有空格 [空格 判斷式 空格]。

在上面的例子中我們只使用到了 –e,用來判斷指定的文檔是否存在。那在判斷式中還有哪些標志可以用,這些標志又各自代表什么含義。我們可以參考下面的表(這張表是摘自鳥哥的linux私房菜)

關於某個檔名的『文件類型』判斷,如 test -e filename 表示存在否

-e

該『檔名』是否存在?(常用)

-f

該『檔名』是否存在且為文件(file)?(常用)

-d

該『檔名』是否存在且為目錄(directory)?(常用)

-b

該『檔名』是否存在且為一個 block device 裝置?

-c

該『檔名』是否存在且為一個 character device 裝置?

-S

該『檔名』是否存在且為一個 Socket 文件?

-p

該『檔名』是否存在且為一個 FIFO (pipe) 文件?

-L

該『檔名』是否存在且為一個連結檔?

關於文件的權限偵測,如 test -r filename 表示可讀否 (但 root 權限常有例外)

-r

偵測該檔名是否存在且具有『可讀』的權限?

-w

偵測該檔名是否存在且具有『可寫』的權限?

-x

偵測該檔名是否存在且具有『可運行』的權限?

-u

偵測該檔名是否存在且具有『SUID』的屬性?

-g

偵測該檔名是否存在且具有『SGID』的屬性?

-k

偵測該檔名是否存在且具有『Sticky bit』的屬性?

-s

偵測該檔名是否存在且為『非空白文件』?

兩個文件之間的比較,如: test file1 -nt file2

-nt

(newer than)判斷 file1 是否比 file2 新

-ot

(older than)判斷 file1 是否比 file2 舊

-ef

判斷 file1 與 file2 是否為同一文件,可用在判斷 hard link 的判定上。 主要意義在判定,兩個文件是否均指向同一個 inode 哩!

關於兩個整數之間的判定,例如 test n1 -eq n2

-eq

兩數值相等 (equal)

-ne

兩數值不等 (not equal)

-gt

n1 大於 n2 (greater than)

-lt

n1 小於 n2 (less than)

-ge

n1 大於等於 n2 (greater than or equal)

-le

n1 小於等於 n2 (less than or equal)

判定字串的數據

test -z string

判定字串是否為 0 ?若 string 為空字串,則為 true

test -n string

判定字串是否非為 0 ?若 string 為空字串,則為 false。

注: -n 亦可省略

test str1 = str2

判定 str1 是否等於 str2 ,若相等,則回傳 true

test str1 != str2

判定 str1 是否不等於 str2 ,若相等,則回傳 false

多重條件判定,例如: test -r filename -a -x filename

-a

(and)兩狀況同時成立!例如 test -r file -a -x file,則 file 同時具有 r 與 x 權限時,才回傳 true。

-o

(or)兩狀況任何一個成立!例如 test -r file -o -x file,則 file 具有 r 或 x 權限時,就可回傳 true。

!

反相狀態,如 test ! -x file ,當 file 不具有 x 時,回傳 true

總結

以上是生活随笔為你收集整理的shell判断false_Linux脚本shell常用判断式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。