3. Shell 基本运算符
1. 概述
1.1 Shell 支持多种运算符,包括以下几种
- 算数运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
1.2 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
例如:expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
#!/bin/bash
val=`expr 2 \* 3`
echo "$val"
注意点:
- 表达式和运算符之间要有空格, 2 与 3之间必须要有空格
- 完整的表达式要被``包含
2. 算术运算符
假定变量 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 ] 返回 false。 |
| != | 不等 | [ $a != $b ] 返回 true |
注意: 条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
3. 关系运算符
假定变量 a 为 10,变量 b 为 20
| 运算符 | 说明 | 举例 |
|---|---|---|
| -eq | 是否相等,相等返回 true | [ $a -eq $b ] 返回 false。 |
| -ne | 是否相等,不相等返回 true | [ $a -ne $b ] 返回 true。。 |
| -gt | 左边的数是否大于右边的,如果是,则返回 true | [ $a -gt $b ] 返回 false。。 |
| -lt | 左边的数是否小于右边的,如果是,则返回 true | [ $a -lt $b ] 返回 true。 |
| -ge | 左边的数是否大等于右边的,如果是,则返回 true | [ $a -ge $b ] 返回 false。 |
| -le | 左边的数是否小于等于右边的,如果是,则返回 true | [ $a -le $b ] 返回 true。 |
4. 布尔运算符
假定变量 a 为 10,变量 b 为 20
| 运算符 | 说明 | 举例 |
|---|---|---|
| ! | 非运算,表达式为 true 则返回 false,否则返回 true | [ ! false ] 返回 true |
| -o | 或运算,有一个表达式为 true 则返回 true | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
| -a | 与运算,两个表达式都为 true 才返回 true | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
5. 逻辑运算符
假定变量 a 为 10,变量 b 为 20
| 运算符 | 说明 | 举例 |
|---|---|---|
| && | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
| 逻辑的 OR |
6. 字符串运算符
假定变量 a 为 "abc",变量 b 为 "efg"
| 运算符 | 说明 | 举例 |
|---|---|---|
| = | 测两个字符串是否相等,相等返回 true | [ $a = $b ] 返回 false。 |
| != | 检测两个字符串是否相等,不相等返回 true。 | [ $a != $b ] 返回 true |
| -z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
| -n | 检测字符串长度是否为0,不为0返回 true。 | [ -n $a ] 返回 true。 |
| str | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 |
7. 文件测试运算符
| 操作符 | 说明 |
|---|---|
| -b file | 检测文件是否是块设备文件,如果是,则返回 true。 |
| -c file | 检测文件是否是字符设备文件,如果是,则返回 true。 |
| -d file | 检测文件是否是目录,如果是,则返回 true。 |
| -f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 |
| -g file | 检测文件是否设置了 SGID 位,如果是,则返回 true。 |
| -k file | 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 |
| -p file | 检测文件是否是具名管道,如果是,则返回 true。 |
| -u file | 检测文件是否设置了 SUID 位,如果是,则返回 true。 |
| -r file | 检测文件是否可读,如果是,则返回 true。 |
| -w file | 检测文件是否可写,如果是,则返回 true。 |
| -x file | 检测文件是否可执行,如果是,则返回 true。 |
| -s file | 检测文件是否为空(文件大小是否大于0),不为空返回 true。 |
| -e file | 检测文件(包括目录)是否存在,如果是,则返回 true。 |
3. Shell 基本运算符的更多相关文章
- (转)Shell——基本运算符
Shell 基本运算符 原文:http://blog.csdn.net/sinat_36053757/article/details/70319481 Shell 和其他编程语言一样,支持多种运算符, ...
- 五、Shell 基本运算符
Shell 基本运算符 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令 ...
- Shell基本运算符之字符串运算符
Shell基本运算符 1.字符串运算符 常用的字符串运算符 运算符 说明 例子 = 检测两字符串是否相等,相等返回true [ $a = $b ] != 检测两个字符串是否部相等,不相等返回true ...
- Shell基本运算符之布尔运算符、逻辑运算符
Shell基本运算符 =============================摘自与菜鸟教程=============================== 1.布尔运算符 ! 非运算,表达式为tru ...
- Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...
- [Linux]Shell的运算符和特殊变量
说起Shell脚本,免不了用变量.特别是对于这种一堆符号表示变量的语言来说,你不了解一下相关变量的本意,根本无从下手.譬如写个循环遍历,$#就起了好大作用.所以还是有必要记录一下,也是对学习的一个笔记 ...
- shell 算术运算符
算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30. - 减法 `expr $a - $b` ...
- (二)Linux Shell编程——运算符、注释
2.7 Shell运算符 Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符.原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...
- Shell 基本运算符(转)
Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...
随机推荐
- 工具类 util.Date 日期类
/** * @description format the time * @author xf.radish * @param {String} format The format your want ...
- PotPlayer播放器 莫尼卡汉化绿色版 V1.6.48089 32位
软件名称: PotPlayer播放器 莫尼卡汉化绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 10.5MB ...
- win8.1和centos6.5 双系统启动问题
笔记本系统为centos 6.5,由grub引导启动,安装了win 8.1后,开机直接进入win 8.1,没有出现centos6.5 引导项,解决办法: 一.开机按ESC键进入启动顺序菜单,选择cen ...
- C#拾遗(二、函数)
1. 参数数组.C#的特色,允许函数参数的最后指定一个参数数组,可以使用个数不定的参数调用,用params关键字定义 static double SumVals(params double[] val ...
- 判断iPhone设备是carplay和iPod的方法
Carplay 参考代码: int UdevIsCarplay(int nVid, int nPid)//int UsbModeSwitch(pUdevStatus pStatus) { ; if ( ...
- Java语法基础总结
这次上课我们讲了Java语言中的枚举类型,并进行了一次课堂测试,测试代码如下: public class EnumTest { public static void main(String[] arg ...
- iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能
有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...
- 树莓派+Android Things
在开始之前 谷歌前不久发布了Android Things面向物联网的系统,用意是想让android开发者用原来开发app的方式开发硬件相关的应用,扩展了android开发的方向和前景,而谷歌的Andr ...
- libev中timer时间事件监控器
1.数据结构 #define ev_at(w) ((WT)(w))->at#define ev_active(w) ((W)(w))->active typedef ev_watcher_ ...
- JMM内存管理
原文地址http://www.cnblogs.com/BangQ/p/4045954.html 原本准备把内存模型单独放到某一篇文章的某个章节里面讲解,后来查阅了国外很多文档才发现其实JVM内存模型的 ...