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 和 ...
随机推荐
- 【bootstrap】时间选择器datetimepicker和daterangepicker
在bootstrap中的时间选择器有两种:dateTimePicker和dateRangePicker 1.dateTimePicker好像是官方嫡插件: 需要的文件: <link rel= ...
- CSS3 Filter滤镜效果
关注到它是在一次分享会当中,很神奇,只需写一行代码就可以变身很美的视觉效果,这就是CSS3滤镜. 语法 filter:fuction(param); 如今浏览器支持情况相比以前乐观很多,点击查看兼容 ...
- tfs 清除缓存,在需要时
C:\Users\xxx\AppData\Local\Microsoft\Team Foundation\5.0
- 【Python之路】第八篇--Python基础之网络编程
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- HTML,JS禁止鼠标右键、禁止全选、复制、粘贴的方法
禁止鼠标右键.禁止全选.复制.粘贴: oncontextmenu事件禁用右键菜单: js代码: document.oncontextmenu = function(){ event.returnVal ...
- Openlayer 3 删除上一次绘制的图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MySQL数据库传输BLOB类型数据丢失 解决办法
修改MySQL安装目录下my.ini文件配置:
- Python3与Python2的区别汇总
1.print 在Python3.0 是一个函数,正确输入应该是:print (3x) 2.raw_input 在Python3.0改成input
- OBIEE 12C
OBIEE 12C安装配置 oracle官网下载BIEE12C 在虚拟机上安装 linux 在SQLPLUS启动和停止Oracle数据库 重启oracle数据库 cmd->1.lsnrctl s ...
- mvc 目录不存在/Directory does not exist.的解决方案
今天MVC项目测试出一个问题,当w3wp.exe进程关闭时,第一次运行网站出现 如下错误 目录不存在 Directory does not exist. Parameter name: directo ...