linux基礎之bash條件測試


這裏是一段防爬蟲文本,請讀者忽略。
本文原創首發於CSDN,作者IDYS
博客首頁:https://blog.csdn.net/weixin_41633902/
本文鏈接:https://blog.csdn.net/weixin_41633902/article/details/105723634



- 寫在開頭的話

  • 請記住:實踐是掌握知識的最快方法
  • 如果你只是懷着看看的態度去快速瀏覽文章,而不去認認真真的把文章裏面講的任何一個知識點去實踐一遍,那麼你永遠也掌握不了它
  • 生命不息,折騰不止!

- bash條件測試

- 測試方式

  • test EXPRESSION
  • [EXPRESSION]
  • [[EXPRESSION]]

- 測試表達式的類別

  1. 數值比較
判斷式 含義
-eq 等於
-ne 不等於
-lt 小於
-gt 大於
-ge 大於或等於
-le 小於或者等於
  1. 字符串測試
判斷式 含義
== 是否等於
> 是否大於
< 是否小於
!= 是否不等於
=~ 左側字符串是否能被右側的PATTERN所匹配
注意:此種表達式兩邊需要被[[ ]]括起來。如
[[ “/usr/ok” =~ ^/.*k$ ]]
-z “STRING” 測試字符串是否爲空,空則爲真,不空則爲假
-n “STRING” 測試字符串是否爲空,不空爲真,空則爲假

注意:用於字符串比較時用到的操作數都應該使用引號

[[ "./usr/ok" =~ ^/.*k$ ]]  
echo $?
1		#echo $? 判斷上一次執行的結果是否正確,因爲字符串無法被PATTERN匹配,所以爲1(注意echo $? 得出的結果爲0時,代表正確,echo $? 得出的結果爲0以外的其他數時,代表錯誤)
[[ "/usr/ok" =~ ^/.*k$ ]]  # ^/ 表示行首以 / 開頭, .*  代表匹配任意字符串	k$代表以行尾以字符 k 結尾
echo $?
0
  1. 文件測試

存在性測試

  • -a FILE | directory 判斷文件或者目錄是否存在
[xiao@dayuanshuai tmp]$ echo $?
1
[xiao@dayuanshuai tmp]$ [ -a /tmp ]
[xiao@dayuanshuai tmp]$ echo $?
0
  • -e FILE 測試文件是否存在,存在爲真,否則爲假
[xiao@dayuanshuai tmp]$ [ -e /etc/fstab ]
[xiao@dayuanshuai tmp]$ echo $?
0
[xiao@dayuanshuai tmp]$ [ -e /etc/fstab123 ]
[xiao@dayuanshuai tmp]$ echo $?
1

存在性及類別測試

  • -b FILE 測試文件是否存在且爲塊設備文件
  • -c FILE 測試文件是否存在且爲字符設備文件
  • -d FILE 測試文件是否存在且爲目錄
  • -f FILE 測試文件是否存在且爲普通文件
  • -h FILE 或 -L FILE  存在且爲符號鏈接文件
  • -P FILE 是否存在且爲命名管道文件
  • -S FILE 是否存在且爲套接字文件

文件權限測試

  • -r FILE 是否存在且可讀
  • -w FILE 是否存在且可寫
  • -x FILE 是否存在且可執行

文件特殊權限測試

  • -g FILE 文件存在且被設置了sgid權限
  • -u FILE 文件存在且被設置了suid權限
  • -k FILE 文件是否存在且擁有stick權限

文件大小測試

  • -s FILE 是否存在且非空

文件是否打開

  • -t fd fd表示文件描述符是否已經打開且與某終端相關

其它

  • -N FILE: 文件自從上一次被讀取之後是否被修改過
  • -O FILE: 當前有效用戶是否爲文件屬主
  • -G FILE: 當前有效用戶是否爲文件屬組

雙目測試:

  • FILE1 -ef FILE2:FILE1與FILE2是否爲同一文件
  • FILE -nt FILE2:FILE1是否新於FILE2
  • FILE1 -ot FILE2:FILE1是否舊於FILE2

- 組合條件測試

  • 邏輯運算
    • 第一種方式:
      • COMMAND1 && COMMAND2
      • COMMAND1 || COMMAND2
      • ! COMMAND
      • [ -e FILE ] && [ -r FILE ]
    • 第二種方式:
      • EXPRESSION1 -a EXPRESSION2 與運算
      • EXPRESSION1 -o EXPRESSION2 或運算
      • ! EXPRESSION
[ -z "$hostName" ] || [ "$hostName"=="localhost.localdomain" ]
[ -z "$hostName" -o "hostName"=="localhost.localdomain"]
[ -z "$hostName" -o "hostName"=="localhost.localdomain"] && hostname www.idayuanshuai.com
[ -f /bin/cat -a -x /bin/cat ] && cat /etc/fatab
  1. 測試 /tmp/function 文件是否既不可讀又不可寫
[ ! \( -r /tmp/functions -o -w /tmp/functions \) ]



- 寫在最後的話:

  • 無論每個知識點的難易程度如何,我都會盡力將它描繪得足夠細緻
  • 歡迎關注我的CSDN博客,IDYS’BLOG
  • 持續更新內容運維 | 網工 | 軟件技巧
  • 如果你有什麼疑問,或者是難題。歡迎評論或者私信我。你若留言,我必回覆!
  • 雖然我現在還很渺小,但我會做好每一篇內容。謝謝關注!


在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章