Bash 程式設計當中的條件怎麼寫, 你知道嗎

2021-10-25 10:38:25 字數 2683 閱讀 2518

簡介: 在 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的階乘!其實回頭想想,如果當初...