Shell Script 判斷式邏輯運算參數

路徑(檔案、目錄)

檔案/目錄 是否存在?

if [ -e "$path" ]; then echo "$path is exist." else echo "$path not found." fi

檔案/目錄 是否為檔案?

if [ -f "$path" ]; then echo "$path is a file." fi

檔案/目錄 是否為資料夾?

if [ -d "$path" ]; then echo "$path is a directory." fi

檔案 大小是否大於0?

if [ -s "$file" ]; then echo "$file is not empty." else echo "The file size of $file is 0." fi

其他判斷式

[ -b /dev/sda ]    /dev/sda 是否為Block Device
[ -c /dev/tty ]    /dev/tty 是否為Character Device
[ -p "$file" ]    檔案 是否為Pipe檔
[ -S "$file" ]    檔案 是否為Socket檔
[ -L "$file" ]    檔案 是否為連結檔
[ -g "$path" ]    檔案/目錄 是否為SGID的屬性?
[ -u "$path" ]    檔案/目錄 是否為SUID的屬性?
[ -k "$path" ]    檔案/目錄 是否為Sticky Bit的屬性?
[ -r "$path" ]    檔案/目錄 權限是否可讀?
[ -w "$path" ]    檔案/目錄 權限是否可寫?
[ -x "$path" ]    檔案/目錄 權限是否可執行?


數字(限整數)

value1 = value2

if [ $value1 -eq $value2 ]; then echo "$value1 is equal to $value2." fi
等效:[ $value1 = $value2 ]

value1 ≠ value2

if [ $value1 -ne $value2 ]; then echo "$value1 is not equal to $value2." fi
等效:[ $value1 != $value2 ]

value1 > value2

if [ $value1 -gt $value2 ]; then echo "$value1 is greater than $value2." fi

value1 < value2

if [ $value1 -lt $value2 ]; then echo "$value1 is less than $value2." fi

value1 ≥ value2

if [ $value1 -ge $value2 ]; then echo "$value1 is greater or equal to $value2." fi

value1 ≤ value2

if [ $value1 -le $value2 ]; then echo "$value1 is less or equal to $value2." fi

字串

字串是否無值 (空字串)

if [ -z "$str" ]; then echo "Empty string." fi
等效:[ "$str" == "" ][ ! "$str" ]

字串是否有值 (非空字串)

if [ -n "$str" ]; then echo "$str is not empty." fi
等效:[ "$str" != "" ][ "$str" ]


參考資料

留言

這個網誌中的熱門文章

Python的10進制與16進制轉換

設定CPU的Cache模式:MTRR

ls -l 顯示出現亂碼