Shell 基本运算符

关键要点

  • Shell 基本运算符包括算术(如加减乘除)、关系(如等于、大于)、布尔(如与或非)、字符串(如长度判断)和文件测试(如文件是否存在)。
  • 算数运算需用 expr$(( )),关系和布尔运算常用于条件判断。
  • 文件测试运算符检查文件属性,如可读、可写或目录。

算数运算符

Shell 不直接支持数学运算,但可用 expr 命令实现。例如,加法:val=expr 2 + 2“ 输出 4。注意,表达式需用反引号括起来,运算符和数字间要有空格。

关系和布尔运算符

关系运算符如 -eq(等于)、-gt(大于)用于比较数字。布尔运算符如 -o(或)、-a(且)组合条件。例如,[ 10 -gt 5 -a 10 -lt 20 ] 为真。

字符串和文件测试运算符

字符串运算符如 -z 检查字符串长度为零,-n 检查非零。文件测试如 -f 检查是否为普通文件,-d 检查是否为目录。

推荐资源

更多详情可参考 Shell 基本运算符 | 菜鸟教程Shell 基本运算符 – 简单教程,简单编程


调查笔记

为了回答用户关于 Shell 基本运算符的中文讲解需求,我首先通过网络搜索关键词“Shell 基本运算符中文讲解”,找到了多个相关资源,包括权威教程网站和开发者博客。以下是详细的分析过程和总结,确保回答全面且准确。

资源收集与分析

搜索结果显示,出现了多个高质量的中文教程资源,我选择了以下两个主要来源进行深入分析:

  1. Shell 基本运算符 | 菜鸟教程
  2. Shell 基本运算符 – 简单教程,简单编程

此外,还有其他博客和文章,如 Zhihu 专栏,但相关内容不直接涉及 Shell 基本运算符,因此未纳入主要分析。

第一步:分析“菜鸟教程”

该页面提供了 Shell 基本运算符的全面分类,包括以下几个方面:

  • 概述:Shell 支持算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生 Bash 不支持简单数学运算,需用 exprawk,其中 expr 最常用。
  • 算数运算符:详细列出了运算符及其用法,假设变量 a=10b=20,提供了表格形式说明:
    运算符 描述 示例 结果
    + 加法 expr $a + $b 30
    – 减法 expr $a - $b -10
    * 乘法 expr $a \* $b 200
    / 除法 expr $b / $a 2
    % 取余 expr $b % $a 0
    = 赋值 a=$b 将 b 的值赋给 a
    == 相等(数字) [ $a == $b ]
    != 不相等(数字) [ $a != $b ]关系运算符:支持数字比较,假设 a=10b=20
    运算符 描述 示例 结果
    ——– ————– ————————– ——-
    -eq 等于 [ $a -eq $b ]
    -ne 不等于 [ $a -ne $b ]
    -gt 大于 [ $a -gt $b ]
    -lt 小于 [ $a -lt $b ]
    -ge 大于等于 [ $a -ge $b ]
    -le 小于等于 [ $a -le $b ]布尔运算符:假设 a=10b=20
    运算符 描述 示例 结果
    ——– ————– ————————– ——-
    ! 非 [ ! false ]
    -o 或 [ $a -lt 20 -o $b -gt 100 ]
    -a 且 [ $a -lt 20 -a $b -gt 100 ]逻辑运算符:假设 a=10b=20
    运算符 描述 示例 结果
    ——– ————– ————————– ——-
    && 逻辑且 [[ $a -lt 100 && $b -gt 100 ]]
    逻辑或 [[ $a -lt 100 || $b -gt 100 ]]字符串运算符:假设 a="abc"b="efg"
    运算符 描述 示例 结果
    ——– ————– ————————– ——-
    = 等于 [ $a = $b ]
    != 不等于 [ $a != $b ]
    -z 长度为零 [ -z $a ]
    -n 长度非零 [ -n "$a" ]
    $ 不为空 [ $a ]文件测试运算符:以文件 /var/www/runoob/test.sh(100 字节,rwx 权限)为例:
    运算符 描述 示例 结果
    ——– ————– ————————– ——-
    -b 块设备文件 [ -b $file ]
    -c 字符设备文件 [ -c $file ]
    -d 目录 [ -d $file ]
    -f 普通文件 [ -f $file ]
    -g SGID 位 [ -g $file ]
    -k 粘滞位 [ -k $file ]
    -p 命名管道 [ -p $file ]
    -u SUID 位 [ -u $file ]
    -r 可读 [ -r $file ]
    -w 可写 [ -w $file ]
    -x 可执行 [ -x $file ]
    -s 大小>0 [ -s $file ]
    -e 存在 [ -e $file ]增量/减量运算符:Shell 没有直接的 ++/--,但可通过 let$(())expr(( )) 实现。例如,let num++num=$((num + 1))。 第二步:分析“简单教程,简单编程” 该页面内容与“菜鸟教程”类似,也涵盖了所有基本运算符的分类,但有一些补充:
    • 强调 expr 的使用,MAC 系统默认使用 $((expression)),乘法 * 不需要转义。
    • 文件测试运算符中,额外解释了粘滞位的功能,防止文件被删除。
    • 示例中假设变量 a=7b=17,与“菜鸟教程”的 a=10b=20 不同,但不影响运算符的通用性。
    第三步:对比与总结
    • 两个资源内容高度一致,均提供了算数、关系、布尔、字符串和文件测试运算符的详细说明。
    • “菜鸟教程”表格更全面,适合初学者快速查阅;“简单教程”对 MAC 系统的说明更具体。
    • 其他搜索结果如 Zhihu 未提供相关信息,因此未纳入。
    最终回答的构建 基于以上分析,我提取了“菜鸟教程”的核心内容,整理成简洁的直接回答部分,确保用户能快速理解 Shell 基本运算符的用法。同时,在调查笔记中保留了所有细节,包括表格和示例,供用户深入学习。 关键信息提取关键引用

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注