自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Bash 基礎知識系列 #7:If Else 語句

系統(tǒng) Linux
如果這樣,那就那樣,否則就……。還不明白嗎?了解了 Bash Shell 腳本中的 if-else 語句后就明白了。

Bash 支持 if-else 語句,以便你可以在 shell 腳本中使用邏輯推理。

通用的 if-else 語法如下:

if [ expression ]; then
  ## 如果條件為真則執(zhí)行此塊,否則轉到下一個
elif [ expression ]; then
  ## 如果條件為真則執(zhí)行此塊,否則轉到下一個
else 
  ## 如果以上條件都不成立,則執(zhí)行此塊
fi

正如你所注意到的:

  • elif 用于 “否則如果” 類型的條件。
  • if-else 條件始終以 fi 結尾。
  • 使用分號 ; 和 then 關鍵字

在展示 if 和 else-if 的示例之前,我先分享一下常見的比較表達式(也稱為測試條件)。

測試條件

以下是可用于數字比較的測試條件運算符:

條件

當滿足以下條件時為真

$a -lt $b

$a < $b$a 小于 $b

$a -gt $b

$a > $b$a 大于 $b

$a -le $b

$a <= $b$a 小于等于 $b )

$a -ge $b

$a >= $b ($a 大于等于 $b

$a -eq $b

$a == $b

$a -ne $b

$a != $b

如果你要比較字符串,可以使用以下測試條件:

條件

當滿足以下條件時為真

"$a" = "$b"

$a 與 $b 相同

"$a" == "$b"

$a 與 $b 相同

"$a" != "$b"

$a 與 $b 不同

-z "$a"

$a 為空字符串

文件類型檢查也有條件:

條件

當滿足以下條件時為真

-f $a

$a 是一個文件

-d $a

$a 是一個目錄

-L $a

$a 是一個鏈接

現在你已經了解了各種比較表達式,讓我們在各種示例中看看它們的實際應用。

在 Bash 中使用 if 語句

讓我們創(chuàng)建一個腳本來告訴你給定的數字是否為偶數。

這是我的腳本,名為 even.sh

#!/bin/bash
read -p "Enter the number: " num
mod=$(($num%2))
if [ $mod -eq 0 ]; then
	echo "Number $num is even"
fi

當模數運算(%)整除給定數字(本例中為 2)時,它返回零。

?? 特別注意空格。左括號和右括號與條件之間必須有空格。同樣,條件運算符(-le、== 等)前后必須有空格。

這是我運行腳本時顯示的內容:

Running a script with if statement example in bashRunning a script with if statement example in bash

你是否注意到,當數字為偶數時,腳本會告訴你,但當數字為奇數時,腳本不會顯示任何內容? 讓我們使用 else 來改進這個腳本。

使用 if else 語句

現在我在前面的腳本中添加了一條 else 語句。這樣,當你得到一個非零模數(因為奇數不能除以 2)時,它將進入 else 塊。

#!/bin/bash
read -p "Enter the number: " num
mod=$(($num%2))
if [ $mod -eq 0 ]; then
	echo "Number $num is even"
else
	echo "Number $num is odd"
fi

讓我們用相同的數字再次運行它:

Running a bash script that checks odd even numberRunning a bash script that checks odd even number

正如你所看到的,該腳本更好,因為它還告訴你該數字是否為奇數。

使用 elif(否則如果)語句

這是一個檢查給定數字是正數還是負數的腳本。在數學中,0 既不是正數也不是負數。該腳本也檢查了這一事實。

#!/bin/bash
read -p "Enter the number: " num
if [ $num -lt 0 ]; then
	echo "Number $num is negative"
elif [ $num -gt 0 ]; then
	echo "Number $num is positive"
else
	echo "Number $num is zero"
fi

讓我運行它來涵蓋這里的所有三種情況:

Running a script with bash elif statementRunning a script with bash elif statement

用邏輯運算符組合多個條件

到目前為止,一切都很好。但是你是否知道通過使用與(&&)、或(||)等邏輯運算符可以在一個條件中包含多個條件? 它使你能夠編寫復雜的條件。

讓我們編寫一個腳本來告訴你給定的年份是否是閏年。

你還記得閏年的條件嗎? 它應該被 4 整除,但如果它能被 100 整除,那么它就不是閏年。但是,如果能被 400 整除,則為閏年。

這是我的腳本。

#!/bin/bash
read -p "Enter the year: " year
if [[ ($(($year%4)) -eq 0 && $(($year%100)) != 0) || ($(($year%400)) -eq 0) ]]; then
	echo "Year $year is leap year"
else
	echo "Year $year is normal year"
fi

?? 注意上面雙括號 [[ ]] 的使用。如果你使用邏輯運算符,則這是強制性的。

通過使用不同的數據運行腳本來驗證腳本:

Example of running  bash script with logical operators in if statementExample of running bash script with logical operators in if statement

??? 練習時間

讓我們做一些練習吧 ??

練習 1:編寫一個 Bash Shell 腳本,檢查作為參數提供給它的字符串的長度。如果未提供參數,它將打印 “empty string”。

練習 2:編寫一個 Shell 腳本來檢查給定文件是否存在。你可以提供完整的文件路徑作為參數或直接在腳本中使用它。

提示:文件使用 -f 選項

練習 3:通過檢查給定文件是否是常規(guī)文件、目錄或鏈接或者是否不存在來增強之前的腳本。

提示:使用 -f、-d 和 -L

練習 3:編寫一個接受兩個字符串參數的腳本。腳本應檢查第一個字符串是否包含第二個參數的子串。

提示:請參閱上一章 Bash 字符串

我希望你喜歡 Bash 基礎知識系列。在下一章中,你將了解如何在 Bash 中使用循環(huán)。繼續(xù)編寫 Bash!

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-07-17 14:29:01

Bash算術運算

2023-08-22 21:42:03

Bash函數

2022-12-09 07:58:52

Bash條件語句

2023-07-20 15:37:50

Bash數組

2023-07-12 14:13:03

BashLinux

2023-08-21 12:31:41

BashForWhile

2023-07-30 09:50:51

Bash字符串

2023-07-15 18:19:47

Bash參數

2023-06-19 11:30:19

bashshell

2015-08-27 14:50:40

BISSIS

2009-12-22 14:27:28

Cisco3600

2011-09-16 10:13:02

Emacs

2011-03-29 14:11:20

Cacti基礎知識

2009-04-10 09:35:00

WCDMA基礎無線網絡

2023-07-04 07:31:06

MapReduce數據處理編程模型

2010-07-16 11:22:31

Perl

2014-08-20 10:15:45

2009-12-14 14:29:15

2009-09-23 11:07:11

Hibernate基礎

2010-07-16 10:53:30

Perl基礎
點贊
收藏

51CTO技術棧公眾號