什么是Bash中的 "不等于 "符号?如何使用它?

3,134 阅读3分钟

Linux Bash编程语言里面的不等于"-ne "控制器在两个可能的值不相等时进行比较。在Ubuntu bash中,不等值功能由符号"-ne "表示,这将是 "不等值 "的初始字符。 还包括"!="操作符,用来表示不等值的情况。惊叹号,即"!="在某些计算机语言中也常用来表示不等于的情况。此外,为了使不等于表达式发挥作用,它必须用大括号[[...]]括起来。不等于操作产生的布尔结果是 "真 "或 "假"。不等于表达式通常只与if或elif表达式结合使用,以检查是否相等并运行指令。

例子01:

让我们看看不等号在bash中是如何工作的。为此,让我们先从Linux操作系统中登录。在我们的例子中,我们一直在Ubuntu 20.04上工作。登录成功后,通过 "Ctrl+Alt+T "在桌面上启动名为 "终端 "的控制台应用程序。或者,你也可以从活动菜单栏中探索它,并使用搜索栏进行搜索。终端应用程序已经成功启动;我们将创建一个新的bash文件来保存其中的bash代码。因此,我们制作了一个名为 "test.sh "的bash文件,其内置的 "touch "查询方式如下。

$ touch test.sh

当你完成了文件的创建,在任何一个已经内置或安装在你的Linux系统中的编辑器中打开这个文件。在我们的例子中,我们在Ubuntu 20.04中配置了GNU编辑器。因此,我们用nano查询打开了 "test.sh "文件,如下所示。

$ nano test.sh

你会看到,新创建的bash文件将通过GNU编辑器打开。现在在你的bash文件中写下如下图片所示的代码。所以,我们首先添加了bash扩展名。之后,我们声明了一个变量 "val",其值为 "Aqsa"。在 "if "语句中,我们声明了一个条件。我们将制作一个字符串元素$val并将其与字符串 "Aqsa "进行比较。在整个实例中,我们将看到提供的文本bash变量 "val "是否与指定的字符串 "Aqsa "不一致。如果条件满足并且两个值都不匹配,它将运行第一个echo语句。否则,它将执行代码的另一部分,并结束 "if-else "语句。当比较文本类型时,-ne操作符不能丢弃;或者说,"!="操作符必须始终丢弃。因此,你可以看到,我们在下面的代码中使用了"!="而不是"-新"。用 "Ctrl+S "保存这段代码,同时通过 "Ctrl+X "快捷方式退出。

当bash文件在终端内执行时,由于条件没有得到满足,它显示了另一部分代码。至于条件是否为真,必须有不相等的字符串类型的值。因此,我们得到的输出是 "It's Equal"。

$ bash test.sh

用 "nano "查询再一次打开bash文件。在 "if-statement "中唯一要做的改变是在 "括号 "内。我们刚刚将字符串 "Aqsa "改为 "Aqsaa"。现在,变量值 "Aqsa "和这个字符串 "Aqsaa "并不完全吻合。条件在这里不满足。因此,"then "子句的echo部分必须被执行,并在终端内打印 "It's Not Equal"。让我们再一次保存bash代码并退出编辑器。

在通过bash命令成功执行bash文件后,它如期打印出了 "It's Not Equal"。

$ bash test.sh

例子02:

这次我们来看看不同的代码。这里有一点不同。我们这次使用了两个要比较的变量。我们将这些字符串变量命名为 "fname "和 "lname",并使用不同的值,例如 "Aqsa "和 "Yasin"。现在,在 "if "语句的条件部分,我们通过不等于"!="运算符使用这两个变量进行比较。如果条件满足,它将执行 "then "部分的echo语句。否则,它将运行 "else "语句的 "echo "部分。

在终端运行test.sh bash文档后,我们得到了第一个echo语句的结果 "Names are not Equal",因为条件满足。

$ bash test.sh

让我们看看当我们在bash代码中使用"-ne "而不是"!="来比较字符串类型的变量时会发生什么。用nano指令再次打开test.sh这个bash文件。文件打开后,用"-ne "替换 "if "语句条件行中的"!="部分。其余的代码将是一样的,不会有任何变化。

这一次,当我们执行bash代码时,它在终端上得到一个异常,说 "预计是整数表达式"。这意味着"-ne "运算符必须只用于整数类型的变量的比较。另一方面,它也显示了错误的输出 "Names are Equal",这是一个大错误。

$ bash test.sh

例子03:

这一次我们将使用整数类型的变量来比较"-ne "运算符,而不是例子中的"!="运算符。所以,我们已经用数值初始化了 "val1 "和 "val2 "这两个整数型变量。然后我们在 "if "条件子句中使用这些变量进行"-ne "比较。其余的代码也是一样的,只是做了些小改动。

由于val1和val2变量的数值不同,执行时显示 "数字不相等"。

$ bash test.sh

例04:

我们在上面所有的例子中都使用了单字字符串类型的数值或者一些整数类型的数值。这次我们将在变量内使用一个长字符串或句子来获得比较。打开bash文件后,我们已经声明了两个字符串类型的变量,"s1 "和 "s2",其字符串值相同。这一次,我们将长句子作为值分配给两个变量,例如,"Aqsa Yasin是一名内容作家"。由于两个变量都是字符串类型,我们在if语句中和括号部分用"!="操作符对两个变量进行了比较。

由于条件出错,这就是为什么它打印出 "字符串相等"。

$ bash test.sh

例子05:

在我们的最后一个例子中,我们声明了两个变量,它们的字符串值都是电子邮件,要进行比较。一眼望去,你将无法指出一个错误,但这两个值是不一样的。代码的其余部分并没有改变。保存代码并转向终端。

由于电子邮件不相等,它执行了then子句的第一个echo语句,说 "Mails are Not Equal",一旦文件在shell中用 "bash "查询执行。

$ bash test.sh

总结

在这个简单的指南中,我们已经看到了许多关于不等号运算符的工作实例。我们已经阐述了这些字符串和整数类型变量的例子。我们希望这篇文章对你来说是有益的和容易做到的。