Skip to main content

BASH初学者指南 - 比较事物

Supersection 1, More Comfortable (六月 2025)

Supersection 1, More Comfortable (六月 2025)
Anonim
08年1月1日

BASH初学者指南 - 比较事物

在BASH教程的前一部分中,我们研究了条件语句。

该指南很长,但实际上只展示了如何控制逻辑流程。本指南显示了比较变量的不同方法。

上图显示了本周指南中的第一个示例:

#!/斌/庆典NAME1 = “加里”NAME2 = “鲍勃”if “$ name1”=“$ name2”然后 回声“名字匹配”其他 回声“名字不匹配”科幻

在上面的脚本中,我定义了两个名为name1和name2的变量,并为它们赋值“gary”和“bob”。由于变量包含在引号之间,因此它们被称为字符串变量,随着教程的继续而变得更加相关。

所有脚本都比较$ name1和$ name2的值,如果它们匹配输出字符串“名称匹配”,如果它们不输出字符串“名称不匹配”。

$ name1和$ name2变量周围的引号很重要,因为如果没有设置其中任何一个的值,那么脚本仍然可以工作。

例如,如果$ name1从未设置过,那么你将比较“”和“bob”。没有引号,你会留下=“bob”,这显然是失败的。

您还可以使用!=表示法定义不等于如下:

if “$ name1”!=“$ name2” 08年02月

BASH初学者指南 - 比较字符串

在上面的例子中,测试比较了相同的两个字符串,并询问问题是否在字母表中的bob之前出现?

显然答案是否定的。

该脚本引入了less运算符(<)。由于小于运算符也用于重定向,你必须用斜杠()来转义它,这意味着小于上面脚本中为什么我比较“$ name1” <“$ name2”。

小于的相反明显大于。而不是使用 <use >。

例如

if “$ name1”>“$ name2” 08年3月

BASH初学者指南 - 比较字符串

如果要测试变量是否具有值,可以使用以下测试:

如果-n $ name2

在上面的脚本中,我测试了$ name2是否已被赋予一个值,如果它没有消息“没有bob,则从未出现过bob”。

08年4月

BASH初学者指南 - 比较字符串

在过去的幻灯片中,我们介绍了是否已设置变量。有时虽然可能已设置变量但实际上可能没有值。

例如:

name1 =“”

要测试变量是否具有值(即长度为零),请使用-z,如下所示:

如果-z $ name1

在上面的脚本中,我将$ name1设置为零长度字符串,然后使用-z进行比较。如果$ name1的长度为零,则会显示“gary已经晚上出去”的消息。

08年05月

BASH初学者指南 - 比较数字

到目前为止,所有的比较都是针对字符串的。比较数字怎么样?

上面的脚本显示了比较两个数字的示例:

#!/斌/庆典一个= 4B = 5如果$ a = $ b然后 回声“4 = 5”其他 回声“4不等于5”科幻

要将变量设置为数字,只需将其设置为不带引号。然后,您可以使用等号比较数字。

但我更喜欢使用以下运算符来比较两个数字:

如果$ a -eq $ b 08年6月

BASH初学者指南 - 比较数字

如果要比较数字是否小于另一个数字,可以使用小于运算符(<)。与字符串一样,您必须使用斜杠转义小于运算符。 ( <)。

比较数字的更好方法是使用以下符号:

  • 小于-lt
  • 小于或等于-le
  • 大于-gt
  • 大于或等于-ge

例如:

如果$ a -lt $ b如果$ a -le $ b如果$ a -ge $ b如果$ a -gt $ b 08年7月

BASH初学者指南 - 比较数字

最后,对于本指南,如果要测试两个数字是否不同,可以使用小于和大于运算符(<>)或-ne,如下所示:

如果$ a <> $ b如果$ a -ne $ b 08年8月

BASH初学者指南 - 比较运算符 - 摘要

如果您错过了本指南的前三部分,可以通过单击以下链接找到它们:

  • 你好,世界
  • 输入参数
  • 条件和变量

在本指南的下一部分中,我将介绍算术。