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

Bash 比較字符串詳細(xì)示例

系統(tǒng) Linux
在本教程中,您將學(xué)習(xí)如何使用下面討論的各種比較運(yùn)算符來比較 bash 字符串。

與其他編程語言類似,bash 中的字符串是保存字符序列的數(shù)據(jù)類型。

在本教程中,您將學(xué)習(xí)如何使用下面討論的各種比較運(yùn)算符來比較 bash 字符串。

首先,讓我們看一個(gè)創(chuàng)建和運(yùn)行 bash 腳本的示例。

創(chuàng)建一個(gè)文件linuxmi.sh并在文件中寫入以下代碼。

#!/bin/bash
greetings="Linux迷 www.linuxmi.com"
echo $greetings

輸出如下:

Linux迷 www.linuxmi.com

注意:腳本中的第一行稱為 shebang,它是到 bash 解釋器的絕對(duì)路徑。

Bash 字符串比較運(yùn)算符

本節(jié)介紹用于比較 bash 字符串的各種比較運(yùn)算符。比較的結(jié)果是真true或假false。

  • string1=string2:?jiǎn)蔚忍?hào)運(yùn)算符,<strong>=, 檢查string1和string2是否相等。例如,如果兩個(gè)字符串包含相同的文本,OK!比較返回true。使用=,操作數(shù)被包裹在[]中。
  • string1==string2: 雙等號(hào)運(yùn)算符,==也檢查兩個(gè)字符串是否相等。在這里,操作數(shù)被包裹在[[]]里面。
  •  string1!=string2:不等式運(yùn)算符,!=檢查string1是否不等于string2。如果它們不相等,則返回 true。
  • string1>string2:大于運(yùn)算符>檢查左側(cè)的字符串是否大于右側(cè)的字符串。字符串之間的比較是基于它們的字母表進(jìn)行的。
  • string1<string2:  小于運(yùn)算符<檢查左側(cè)的字符串是否小于右側(cè)的字符串。成功時(shí)返回 true。
  • string=~regex:表達(dá)式檢查字符串是否與擴(kuò)展的正則表達(dá)式匹配,并在成功時(shí)返回true。
  • -z string: 表達(dá)式檢查字符串的長(zhǎng)度是否為0,成功時(shí)返回true。
  • -n string: 表達(dá)式檢查字符串的長(zhǎng)度是否不是0,成功時(shí)返回true。

檢查兩個(gè)字符串是否相等

您可以使用 bash 中的三個(gè)運(yùn)算符中的任何一個(gè)來檢查兩個(gè)字符串是否相等。運(yùn)算符有單等號(hào)、雙等號(hào)和不等號(hào)運(yùn)算符。示例代碼如下所示。

#!/bin/bash
# Linux迷 www.linuxmi.com
String1="Good Morning!"
String2="Good Morning!"
String3="good morning!"
if [ "$String1" = "$String2" ]; then
echo "字符串1: ${String1} 和字符串2: ${String2} 相等."
else
echo "字符串1: ${String1} 和字符串2: ${String2} 不相等."
fi
if [[ "$String2" == "$String3" ]]; then
echo "字符串2: ${String2} 和字符串3: ${String3} 相等."
else
echo "字符串2: ${String2} 和字符串3: ${String3} 不相等."
fi
if [[ "$String1" != "$String3" ]]; then
echo "字符串1: ${String1} 和字符串3: ${String3} 不相等."
else
echo "字符串1: ${String1} 和字符串3: ${String3} 相等."
fi

輸出如下:

在上面的示例中,您可以看到使用if-else語句執(zhí)行條件檢查以打印結(jié)果。該fi語句指示每個(gè)if-else塊的結(jié)束。兩個(gè)操作數(shù)字符串應(yīng)該完全相同(也區(qū)分大小寫)才能評(píng)價(jià)為true。因此,您可以檢查字符串的準(zhǔn)確性。

比較兩個(gè)字符串的詞典

您可以使用大于>或小于<運(yùn)算符在 bash 中執(zhí)行兩個(gè)字符串的字典比較。按字典順序,大寫大于小寫。在大小寫相同的情況下,按照兩個(gè)字符串的字母順序進(jìn)行比較。字符串之間的比較是從左到右進(jìn)行的??纯聪旅娴膶?shí)際實(shí)現(xiàn)來理解這個(gè)概念。

#!/bin/bash
# Linux迷 www.linuxmi.com
car1="Lamborghini"
car2="Audi"
if [[ "$car1" > "$car2" ]]; then
echo "${car1} is greater than ${car2}."
elif [[ "$car1" < "$car2" ]]; then
echo "${car2} is greater than ${car1}."
else
echo "Both the cars are equal"
fi

在上面的例子中,字符串 car1 和 car2 包含值 Lamborghini 和 Audi 進(jìn)行了比較。按照字典順序,L 被視為大于 A,后者是每個(gè)字符串的首字母。

這是因?yàn)?Unicode 字符 L (U+004C) 比 A (U+0041) 大。因此,字符串蘭 Lamborghini 被評(píng)估為大于奧迪。

檢查字符串是否為空

您可以使用 -n 或 -z 運(yùn)算符檢查字符串是否為空。示例如下所示。

#!/bin/bash
# Linux迷 www.linuxmi.com
name=""
address="linuxmi.com"
if [[ -z $name ]]; then
echo "字符串:name為空。"
fi
if [[ -z $address ]]; then
echo "字符串:address不是空的。"
else
echo "address 是 ${address}"
fi

在上面的演示中,兩個(gè)字符串中的一個(gè)是空的。當(dāng)$name為空時(shí),-z $name表達(dá)式返回 true。因此,將執(zhí)行if塊。同時(shí),表達(dá)式-z $address返回 false,因?yàn)?$address 不為空。結(jié)果,else塊被執(zhí)行。

您也可以將-n運(yùn)算符用于類似的場(chǎng)景。

#!/bin/bash
# Linux迷 www.linuxmi.com
name="LinuxMi"
job=""
if [[ -n $name ]]; then
echo "字符串:name不為空,值為 ${name}"
fi
if [[ -n $job ]]; then
echo "字符串:job不是空的。"
else
echo "字符串:job為空。"
fi

上面的示例顯示,當(dāng)字符串不為空時(shí),-n string時(shí)返回true 。因此,該if塊在檢查name字符串時(shí)被執(zhí)行。當(dāng)檢查空字符串 job時(shí),它返回false,并且else塊被執(zhí)行。

檢查字符串是否包含子字符串

您可以使用正則表達(dá)式運(yùn)算符 ,=~來檢查字符串是否包含子字符串。運(yùn)算符的左側(cè)包含字符串,而右側(cè)包含要檢查的子字符串。一個(gè)簡(jiǎn)單的例子如下所示。

#!/bin/bash
# Linux迷 www.linuxmi.com
day='Today is Monday!'
if [[ $day =~ Monday ]]; then
echo "找到子字符串。"
else
echo "未找到子字符串。"
fi
if [[ $day =~ Sunday ]]; then
echo "找到子字符串。"
else
echo "未找到子字符串。"
fi

在上面的示例中,字符串是Today is Monday!. 根據(jù)字符串檢查兩個(gè)子字符串Sunday和Monday。由于字符串包含Monday,因此該if塊在評(píng)估時(shí)被執(zhí)行true。對(duì)于Sunday,它不存在于字符串中。結(jié)果,比較會(huì)導(dǎo)致false和else塊被執(zhí)行。

結(jié)論

在本教程中,您了解了一些常見的 bash 字符串比較運(yùn)算符。最后,您學(xué)習(xí)了如何使用這些運(yùn)算符來比較不同場(chǎng)景中提供的 bash 字符串。

責(zé)任編輯:龐桂玉 來源: Linux公社
相關(guān)推薦

2023-01-09 09:52:06

Bash字符串

2022-11-25 07:53:26

bash腳本字符串

2021-03-08 08:23:24

Java字符串截取

2017-12-11 13:50:17

LinuxBash子字符串

2022-12-06 08:27:50

Bash腳本字符串

2010-11-26 09:46:26

MySQL字符串相加

2009-11-30 14:08:42

PHP字符串原理

2022-12-08 12:05:03

Bash字符串

2009-02-24 15:39:27

字符串比較函數(shù)函數(shù)

2010-03-09 15:15:02

Python字符串類型

2009-11-27 10:24:25

PHP字符串操作

2009-02-24 14:27:55

2011-06-08 15:45:41

字符串JAVA

2010-07-14 16:48:02

Perl字符串比較

2010-03-22 17:53:50

Python字符Python字符串

2010-11-26 10:22:28

MySQL字符串比較

2012-01-11 09:15:45

Objective-C

2009-12-24 10:06:30

ADO.NET字符串

2009-09-02 15:53:27

C#判斷字符串應(yīng)用

2009-11-16 17:59:13

PHP數(shù)組轉(zhuǎn)字符串
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)