运算符

Nushell 支持以下常见的数学、逻辑和字符串操作的运算符:

运算符描述
+
-
/
*指数 (幂)
mod取模
==等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
=~正则匹配 / 字符串包含另一个字符串
!~正则不匹配 / 字符串包含另一个
in列表包含值
not-in列表不包含值
&&两个布尔值与运算
||两个布尔值或运算

圆括号可用于分组以指定求值顺序,或用于调用命令并在表达式中使用结果。

运算符结合顺序

数学运算的结合顺序如下(从最高优先级到最低):

  • 圆括号 (())
  • 乘 (*) 、 除 (/) 和幂 (**)
  • 加 (+) 和减 (-)
  1. > 3 * (1 + 2)
  2. 9

正则表达式 / 字符串包含运算符

=~!~运算符提供了一种更方便的方法来评估 正则表达式运算符 - 图1 (opens new window)。你不需要知道正则表达式就可以使用它们 —— 它们也是检查一个字符串是否包含另一个的简单方法:

  • string =~ pattern 如果 string 包含 pattern 的匹配返回 true, 反之返回 false
  • string !~ pattern 如果 string 包含 pattern 的匹配返回 false, 反之返回 true

例如:

  1. foobarbaz =~ bar # returns true
  2. foobarbaz !~ bar # returns false
  3. ls | where name =~ ^nu # returns all files whose names start with "nu"

两个运算符都使用了 Rust regex 包的 is_match() 函数运算符 - 图2 (opens new window)

大小写敏感性

对字符串进行操作时,运算符通常是区分大小写的。有几种方法可以处理大小写不敏感的场景:

  1. 在正则表达式运算符中,指定(?i)不区分大小写的模式修饰器:
  1. "FOO" =~ "foo" # returns false
  2. "FOO" =~ "(?i)foo" # returns true
  1. 使用str contains 命令的--insensitive标志:
  1. "FOO" | str contains --insensitive "foo"
  1. 在比较前用str downcase将字符串转换为小写:
  1. ("FOO" | str downcase) == ("Foo" | str downcase)