Nushell
书
Cookbook
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
书
Cookbook
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
  • 入门篇

    • 介绍
    • 安装 Nu
    • 以 Nushell 的方式思考
    • 在系统中四处移动
  • Nu 基础篇

    • 数据类型
    • 加载数据
    • 处理字符串
    • 处理列表
    • 处理表格
    • 管道
    • 命令索引
  • Nushell 编程

    • 自定义命令
    • 别名
    • 运算符
    • 变量和子表达式
    • 脚本
    • 模块
    • 覆层
  • Nu 作为 Shell 使用

    • 配置
    • 环境
    • 标准输入、输出和退出码
    • 转移到系统
    • 配置第三方提示
    • Shell 中的 Shell
    • Reedline,Nu 的行编辑器
    • 外部命令
    • 自定义补全
    • Nu 的配色和主题
    • 钩子
  • 迁移到 Nu

    • 从 Bash 到 Nu
    • 从其他 Shell 或 DSL 到 Nu
    • 从命令式语言到 Nu
    • 从函数式语言到 Nu
    • Nushell 运算符
  • 高级篇

    • DataFrames
    • 元数据
    • 创建你自己的错误
    • 并行
    • 插件

运算符

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

运算符描述
+加
-减
*乘
/除
**指数 (幂)
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 =~ ^nu # returns all files whose names start with "nu"

两个运算符都使用了 Rust regex 包的 is_match() 函数。

大小写敏感性

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

  1. 在正则表达式运算符中,指定(?i)不区分大小写的模式修饰器:
"FOO" =~ "foo" # returns false
"FOO" =~ "(?i)foo" # returns true
  1. 使用str contains 命令的--ignore-case标志:
"FOO" | str contains --ignore-case "foo"
  1. 在比较前用str downcase将字符串转换为小写:
("FOO" | str downcase) == ("Foo" | str downcase)
在GitHub上编辑此页面
Contributors: Justin Ma, Hofer-Julian, Wenbo, 0x4D5352, Jan Klass, Solomon
Prev
别名
Next
变量和子表达式