這裏是一段防爬蟲文本,請讀者忽略。
本文原創首發於CSDN,作者IDYS
博客首頁:https://blog.csdn.net/weixin_41633902/
本文鏈接:https://blog.csdn.net/weixin_41633902/article/details/105723634
- 寫在開頭的話
- 請記住:實踐是掌握知識的最快方法
- 如果你只是懷着看看的態度去快速瀏覽文章,而不去認認真真的把文章裏面講的任何一個知識點去實踐一遍,那麼你永遠也掌握不了它
- 生命不息,折騰不止!
- bash條件測試
- 測試方式
- test EXPRESSION
- [EXPRESSION]
- [[EXPRESSION]]
- 測試表達式的類別
- 數值比較
判斷式 | 含義 |
---|---|
-eq | 等於 |
-ne | 不等於 |
-lt | 小於 |
-gt | 大於 |
-ge | 大於或等於 |
-le | 小於或者等於 |
- 字符串測試
判斷式 | 含義 |
---|---|
== | 是否等於 |
> | 是否大於 |
< | 是否小於 |
!= | 是否不等於 |
=~ | 左側字符串是否能被右側的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
- 文件測試
存在性測試
- -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
- 測試 /tmp/function 文件是否既不可讀又不可寫
[ ! \( -r /tmp/functions -o -w /tmp/functions \) ]
- 寫在最後的話:
- 無論每個知識點的難易程度如何,我都會盡力將它描繪得足夠細緻
- 歡迎關注我的CSDN博客,IDYS’BLOG
- 持續更新內容:運維 | 網工 | 軟件技巧
- 如果你有什麼疑問,或者是難題。歡迎評論或者私信我。你若留言,我必回覆!
- 雖然我現在還很渺小,但我會做好每一篇內容。謝謝關注!