簡介: 在 shell 程式設計當中, 經常會使用 if 進行條件判斷, 那麼條件判斷當中的條件應該怎樣標準的書寫, 是我們需要思考的. 雖然說在某種方式的書寫能讓 shell 指令碼正常執行, 但是對於後來人的理解和維護, 這是乙個很大的成本. 本文提供了一種統一的寫法, 方便理解和維護.
a=
"a"b=
"ab"
c=""
## 等於 (=) , 不等於(!=)if[
[$=$
]];then
echo
'等於 if [[ $ = $ ]]'
fiif[[
$!=$]
];then
echo
'不等於 if [[ $ != $ ]]'
fi## 小於(<), 大於(>)if[
[$<$]
];then
echo
'小於 if [[ $
< $ ]]'
fiif[[
$>$]
];then
echo
'大於 if [[ $ > $ ]]'
fi
bash下的正則匹配:if [[ $ =~ $ ]]
模式匹配, 其中$ 要麼是引用的變數, 要麼是字面量此操作只能在 bash 下執行成功.
## 正則匹配 (=~)
a="a"
b="ab"
c=""
# 引用變數
regex=
'^a.*'if[
[$=~ $]]
;then
echo
'正則 if [[ $ =~ $ ]]'
fi# 字面量if[
[$=~ a.* ]];
then
echo
'正則 if [[ $ =~ ^.*$ ]]'
fi
a=
"a"b=
"ab"
c=""
## 空 -z , 非空 -nif[
[ -z $]]
;then
echo
'為空 if [[ -z $ ]]'
fiif
[[ -n $]]
;then
echo
'非空 if [[ -n $ ]]'
fi
## 等於(-eq), 不等於(-ne)
x=1y=2if[
[$ -eq $]]
;then
echo
'等於 if [[ $ -eq $ ]]'
fiif[[
$ -ne $]]
;then
echo
'不等於 if [[ $ -ne $ ]]'
fi## 大於(-gt), 小於(-le), 大於等於(-gte), 小於等於(-lte)if[
[$ -gt $]]
;then
echo
'大於 if [[ $ -gt $ ]]'
fiif[[
$ -lt $]]
;then
echo
'小於 if [[ $ -lt $ ]]'
fi
## 檔案/目錄存在 (-e)if[
[ -e '/root']]
;then
echo
'存在 if [[ -e $ ]]'
fi## 檔案型別判斷: 檔案(-f), 目錄(-d), 鏈結(-l)if[
[ -f '/proc/cpuinfo']]
;then
echo
'檔案 if [[ -f $ ]]'
fiif
[[ -d '/root']]
;then
echo
'目錄 if [[ -d $ ]]'
fi# 檔案許可權: 可讀(-r). 可寫(-w), 可執行(-x)if[
[ -r '/root']]
;then
echo
'可讀 if [[ -r $ ]]'
fi
## 且 (&&, -a), 或 (||, -o)
a=10
b=100if[
[$> 0 &&
$> 0 ]];
then
echo
'且 [[ $ > 0 && $ > 0 ]]'
fiif[[
$> 0 ]]&&
[[$> 0 ]];
then
echo
'且 [[ $ > 0 ]] && [[ $ > 0 ]]'
fiif[[
$> 0 ||
$> 0 ]];
then
echo
'或 [[ $ > 0 || $ > 0 ]]'
fiif[[
$> 0 ]]||
[[$> 0 ]];
then
echo
'或 [[ $ > 0 ]] || [[ $ > 0 ]]'
fi
bash指令碼程式設計的條件測試
如何編寫測試表示式來實現所需的測試 1 執行命令,並利用命令狀態返回值來判斷 0 成功 1 255 失敗 2 測試表示式 test expression expression expression expression兩端必須有空格 bash的測試型別 數值測試 eq 是否等於 ne 是否不等於 g...
C語言的main函式你到底怎麼寫?
c程式一定從main 函式開始執行的 目前不考慮例外的情況 就是乙個大家遵守的規定。被寫到了c99規範 但是從開始學習c語言到現在,我們似乎看到了很多個版本的main函式,那麼哪一種才是正確的呢?main函式版本 main 如果瀏覽舊式的c 會發現程式以如下形式開始 include main 編譯執...
筆試常見的「階乘」程式設計題,你寫對了麼?
在筆試中,我想很多人都會遇到階乘的程式設計題。今天突然想起自己的第一次筆試,就遇到了這樣的題,還沒在電腦上敲過。就隨便來寫一下,不知道大家在筆試的時候都寫對了麼?很多人可能都會用int double之類的型別來儲存結果,可是這樣就很容易出現溢位的情況,不信您來試試100的階乘!其實回頭想想,如果當初...