shell中的邏輯判斷
- 格式1 :if 條件 ; then 語句; fi
- 格式2:if 條件; then 語句; else 語句; fi
- 格式3::if …; then … ;elif …; then …; else …; fi
邏輯判斷表達式
- if [ $a -gt $b ];
- if [ $a -lt 5 ];
- if [ $b -eq 10 ]
- 舉個例子:a賦值10,判斷語句若是a>5 ,則輸出OK。
#!/bin/bash
a=10
if [ $a -gt 5 ]
then
echo "ok"
fi
- 檢查有沒有語法錯誤,使用sh -n 1.sh
- 執行腳本 sh -x 1.sh
判斷符號
- -gt (>);
- -lt(<);
- -ge(>=);
- -le(<=);
- -eq(==);
- -ne(!=)
可使用&& 和|| 來結合多個條件
- if [ $a -gt 5 ] && [ $a -lt 10 ]; then
- if [ $b -gt 5 ] || [ $b -lt 3 ]; then
- && 表示而且
- || 表示或者
if 判斷文件、目錄屬性
-
[ -f file ]判斷是不是普通文件,且存在shell
-
[ -d file ] 判斷是不是目錄,且存在bash
-
[ -e file ] 判斷文件或目錄是否存在code
-
[ -r file ] 判斷文件是否可讀變量
-
[ -w file ] 判斷文件是否可寫file
-
[ -x file ] 判斷文件是否可執行權限
root用戶對文件的讀寫比較特殊,即便一個文件沒有給root用戶讀或者寫的權限,root用戶照樣能夠讀或者寫語法
if判斷的一些特殊用法
- if [ -z "$a" ] 這個表示當變量a的值爲空時會怎麼樣
- if [ -n "$a" ] 表示當變量a的值不爲空
- if grep -q '123' 1.txt; then 表示若是1.txt中含有'123'的行時會怎麼樣
- if [ ! -e file ]; then 表示文件不存在時會怎麼樣
- if (($a<1)); then …等同於 if [ $a -lt 1 ]; then…
- [ ] 中不能使用<,>,==,!=,>=,<=這樣的符號