使用Shell語言實現運算和文档運算

字號+ 編輯: 国内TP粉 修訂: 听风就是我 來源: 利志分享 2023-09-11 我要說兩句(0)

360前技術總監曾哥的技術分享轉載。本篇主要講述shell語言的運算和文档運算方法。

請注意查看代碼中的文字注釋

#!/bin/bash
# shell運算和文档運算
# 布爾運算符
# ! 非運算,表達式爲 true 則返回 false,否則返回 true。 [ ! false ] 返回 true。
# -o 或運算,有一個表達式爲 true 則返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
# -a 與運算,兩個表達式都爲 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。
a=100
b=200
if [ $a != $b ]
then
echo "$a != $b: a不等於b"
else
echo "$a != $b: a等於b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a -lt 100 -a $b -gt 15 : 返回 true"
else
echo "$a -lt 100 -a $b -gt 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a -lt 100 -o $b -gt 100 : 返回 true"
else
echo "$a -lt 100 -o $b -gt 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
echo "$a -lt 100 -o $b -gt 100 : 返回 true"
else
echo "$a -lt 100 -o $b -gt 100 : 返回 false"
fi
# 邏輯運算符
# && 邏輯的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
# || 邏輯的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
字符串運算符
# = 檢測兩個字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
# != 檢測兩個字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
# -z 檢測字符串長度是否爲0,爲0返回 true。 [ -z $a ] 返回 false。
# -n 檢測字符串長度是否爲0,不爲0返回 true。 [ -z $a ] 返回 true。
# str 檢測字符串是否爲空,不爲空返回 true。 [ $a ] 返回 true。
a="abcd"
b="edfg"
if [ $a = $b ]
then
echo "$a = $b : a 等於 b"
else
echo "$a = $b: a 不等於 b"
fi
if [ $a != $b ]
then
echo "$a != $b : a 不等於 b"
else
echo "$a != $b: a 等於 b"
fi
if [ -z $a ]
then
echo "-z $a : 字符串長度爲 0"
else
echo "-z $a : 字符串長度不爲 0"
fi
if [ -n $a ]
then
echo "-n $a : 字符串長度不爲 0"
else
echo "-n $a : 字符串長度爲 0"
fi
if [ $a ]
then
echo "$a : 字符串不爲空"
else
echo "$a : 字符串爲空"
fi
# 文档測試運算符 可以用test -b file 這樣
# -b file 檢測文档是否是塊設備文档,如果是,則返回 true。 [ -b $file ] 返回 false。
# -c file 檢測文档是否是字符設備文档,如果是,則返回 true。 [ -b $file ] 返回 false。
# -d file 檢測文档是否是目錄,如果是,則返回 true。 [ -d $file ] 返回 false。
# -f file 檢測文档是否是普通文档(既不是目錄,也不是設備文档),如果是,則返回 true。 [ -f $file ] 返回 true。
# -g file 檢測文档是否設置了 SGID 位,如果是,則返回 true。 [ -g $file ] 返回 false。
# -k file 檢測文档是否設置了粘著位(Sticky Bit),如果是,則返回 true。 [ -k $file ] 返回 false。
# -p file 檢測文档是否是具名管道,如果是,則返回 true。 [ -p $file ] 返回 false。
# -u file 檢測文档是否設置了 SUID 位,如果是,則返回 true。 [ -u $file ] 返回 false。
# -r file 檢測文档是否可讀,如果是,則返回 true。 [ -r $file ] 返回 true。
# -w file 檢測文档是否可寫,如果是,則返回 true。 [ -w $file ] 返回 true。
# -x file 檢測文档是否可執行,如果是,則返回 true。 [ -x $file ] 返回 true。
# -s file 檢測文档是否爲空(文档大小是否大於0),不爲空返回 true。 [ -s $file ] 返回 true。
# -e file 檢測文档(包括目錄)是否存在,如果是,則返回 true。 [ -e $file ] 返回 true。
file="/root/shell/3.sh"
if [ -r $file ]
then
echo "文档可讀"
else
echo "文档不可讀"
fi
if [ -w $file ]
then
echo "文档可寫"
else
echo "文档不可寫"
fi
if [ -x $file ]
then
echo "文档可執行"
else
echo "文档不可執行"
fi
if [ -f $file ]
then
echo "文档爲普通文档"
else
echo "文档爲特殊文档"
fi
if [ -d $file ]
then
echo "文档是個目錄"
else
echo "文档不是個目錄"
fi
if [ -s $file ]
then
echo "文档不爲空"
else
echo "文档爲空"
fi
if [ -e $file ]
then
echo "文档存在"
else
echo "文档不存在"
fi


閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • 防止退出linux終耑退出之後導致的nohup進程強制退出

  • Linux系統下word文档轉成pdf的辦法

  • ubuntu和debian安裝nginx或者tengine報錯, 找不到pcre依賴庫的解決辦法

  • 常見的web中間件請求返回狀態碼

我要說說
網上賓友點評