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 基本运算符中文讲解”,找到了多个相关资源,包括权威教程网站和开发者博客。以下是详细的分析过程和总结,确保回答全面且准确。
资源收集与分析
搜索结果显示,出现了多个高质量的中文教程资源,我选择了以下两个主要来源进行深入分析:
此外,还有其他博客和文章,如 Zhihu 专栏,但相关内容不直接涉及 Shell 基本运算符,因此未纳入主要分析。
第一步:分析“菜鸟教程”
该页面提供了 Shell 基本运算符的全面分类,包括以下几个方面:
- 概述:Shell 支持算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生 Bash 不支持简单数学运算,需用
expr
或awk
,其中expr
最常用。 - 算数运算符:详细列出了运算符及其用法,假设变量
a=10
,b=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=10
,b=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=10
,b=20
:
运算符 描述 示例 结果
——– ————– ————————– ——-
! 非[ ! false ]
真
-o 或[ $a -lt 20 -o $b -gt 100 ]
真
-a 且[ $a -lt 20 -a $b -gt 100 ]
假 逻辑运算符:假设a=10
,b=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=7
,b=17
,与“菜鸟教程”的a=10
,b=20
不同,但不影响运算符的通用性。
- 两个资源内容高度一致,均提供了算数、关系、布尔、字符串和文件测试运算符的详细说明。
- “菜鸟教程”表格更全面,适合初学者快速查阅;“简单教程”对 MAC 系统的说明更具体。
- 其他搜索结果如 Zhihu 未提供相关信息,因此未纳入。
- 算数运算需用
expr
或$(( ))
,关系和布尔运算常用于条件判断。 - 文件测试运算符如
-f
检查普通文件,-d
检查目录。 - 推荐资源包括 Shell 基本运算符 | 菜鸟教程 和 Shell 基本运算符 – 简单教程,简单编程。
- 强调