运算符
Nushell 支持以下常见的数学、逻辑和字符串操作的运算符:
| 运算符 | 描述 |
|---|---|
+ |
加 |
- |
减 |
| 乘 | |
/ |
除 |
* |
指数 (幂) |
mod |
取模 |
== |
等于 |
!= |
不等于 |
< |
小于 |
<= |
小于等于 |
> |
大于 |
>= |
大于等于 |
=~ |
正则匹配 / 字符串包含另一个字符串 |
!~ |
正则不匹配 / 字符串不包含另一个 |
in |
列表包含值 |
not-in |
列表不包含值 |
&& |
两个布尔值与运算 |
|| |
两个布尔值或运算 |
圆括号可用于分组以指定求值顺序,或用于调用命令并在表达式中使用结果。
运算符结合顺序
数学运算的结合顺序如下(从最高优先级到最低):
- 圆括号 (
()) - 乘 (
*) 、 除 (/) 和幂 (**) - 加 (
+) 和减 (-)
1. > 3 * (1 + 2)
2. 9
正则表达式 / 字符串包含运算符
=~和!~运算符提供了一种更方便的方法来评估 正则表达式
(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() 函数
(opens new window)。
大小写敏感性
对字符串进行操作时,运算符通常是区分大小写的。有几种方法可以处理大小写不敏感的场景:
- 在正则表达式运算符中,指定
(?i)不区分大小写的模式修饰器:
1. "FOO" =~ "foo" # returns false
2. "FOO" =~ "(?i)foo" # returns true
- 使用str contains 命令的
--insensitive标志:
1. "FOO" | str contains --insensitive "foo"
- 在比较前用str downcase将字符串转换为小写:
1. ("FOO" | str downcase) == ("Foo" | str downcase)
