运算符
rsh 支持以下常见的数学、逻辑和字符串操作的运算符:
运算符 | 描述 |
---|---|
+ |
加 |
- |
减 |
* |
乘 |
/ |
除 |
** |
指数 (幂) |
mod |
取模 |
== |
等于 |
!= |
不等于 |
< |
小于 |
<= |
小于等于 |
> |
大于 |
>= |
大于等于 |
=~ |
正则匹配 / 字符串包含另一个字符串 |
!~ |
正则不匹配 / 字符串不包含另一个 |
in |
列表包含值 |
not-in |
列表不包含值 |
not |
逻辑取反 |
&& , and |
两个布尔值与运算 |
|| , or |
两个布尔值或运算 |
// |
整除并向下取整 |
** |
幂运算 |
bit-or |
按位或 |
bit-xor |
按位异或 |
bit-and |
按位与 |
bit-shl |
按位左移 |
bit-shr |
按位右移 |
starts-with |
字符串开始检测 |
ends-with |
字符串结尾检测 |
圆括号可用于分组以指定求值顺序,或用于调用命令并在表达式中使用结果。
运算符结合顺序
数学运算的结合顺序如下(从最高优先级到最低):
- 圆括号 (
()
) -
乘 (
*
) 、 除 (/
) 和幂 (**
) - 加 (
+
) 和减 (-
)
> 3 * (1 + 2)
9
正则表达式 / 字符串包含运算符
=~
和!~
运算符提供了一种更方便的方法来评估
正则表达式。你不需要知道正则表达式就可以使用它们 ——
它们也是检查一个字符串是否包含另一个的简单方法:
-
string =~ pattern
如果string
包含pattern
的匹配返回 true, 反之返回 false; -
string !~ pattern
如果string
包含pattern
的匹配返回 false, 反之返回 true;
例如:
foobarbaz =~ bar # returns true
foobarbaz !~ bar # returns false
ls | where name =~ ^rsh # returns all files whose names start with "rsh"
两个运算符都使用了
Rust regex 包的 is_match()
函数。
大小写敏感性
对字符串进行操作时,运算符通常是区分大小写的。有几种方法可以处理大小写不敏感的场景:
-
在正则表达式运算符中,指定
(?i)
不区分大小写的模式修饰器:
"FOO" =~ "foo" # returns false
"FOO" =~ "(?i)foo" # returns true
-
使用
str contains
命令的--insensitive
标志:
"FOO" | str contains --insensitive "foo"
-
在比较前用
str downcase
将字符串转换为小写:
("FOO" | str downcase) == ("Foo" | str downcase)