- Unix/Linux 初学者教程
- Unix/Linux - 首页
- Unix/Linux - 什么是Linux?
- Unix/Linux - 入门指南
- Unix/Linux - 文件管理
- Unix/Linux - 目录
- Unix/Linux - 文件权限
- Unix/Linux - 环境变量
- Unix/Linux - 基本实用程序
- Unix/Linux - 管道与过滤器
- Unix/Linux - 进程
- Unix/Linux - 进程间通信
- Unix/Linux - vi 编辑器
- Unix/Linux Shell编程
- Unix/Linux - Shell 脚本
- Unix/Linux - 什么是Shell?
- Unix/Linux - 使用变量
- Unix/Linux - 特殊变量
- Unix/Linux - 使用数组
- Unix/Linux - 基本运算符
- Unix/Linux - 决策语句
- Unix/Linux - Shell 循环
- Unix/Linux - 循环控制
- Unix/Linux - Shell 替换
- Unix/Linux - 引号机制
- Unix/Linux - I/O 重定向
- Unix/Linux - Shell 函数
- Unix/Linux - 手册页帮助
- 高级 Unix/Linux
- Unix/Linux - 标准 I/O 流
- Unix/Linux - 文件链接
- Unix/Linux - 正则表达式
- Unix/Linux - 文件系统基础
- Unix/Linux - 用户管理
- Unix/Linux - 系统性能
- Unix/Linux - 系统日志
- Unix/Linux - 信号和陷阱
Unix/Linux - Shell 算术运算符示例
Bourne Shell 支持以下算术运算符。
假设变量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 |
== (等于) | 比较两个数字,如果相同则返回 true。 | [ $a == $b ] 将返回 false。 |
!= (不等于) | 比较两个数字,如果不同则返回 true。 | [ $a != $b ] 将返回 true。 |
非常重要的一点是,所有条件表达式都必须放在方括号内,并且方括号周围要有空格,例如 [ $a == $b ] 是正确的,而 [$a==$b] 是错误的。
所有算术计算都使用长整数进行。
示例
这是一个使用所有算术运算符的示例:
#!/bin/sh a=10 b=20 val=`expr $a + $b` echo "a + b : $val" val=`expr $a - $b` echo "a - b : $val" val=`expr $a \* $b` echo "a * b : $val" val=`expr $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" if [ $a == $b ] then echo "a is equal to b" fi if [ $a != $b ] then echo "a is not equal to b" fi
以上脚本将产生以下结果:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a is not equal to b
使用算术运算符时,需要注意以下几点:
运算符和表达式之间必须有空格。例如,2+2 是错误的;应写成 2 + 2。
整个表达式应包含在‘ ’(单引号)中。
对于乘法运算符 *,应使用转义字符 \。
if...then...fi 语句是决策语句,将在下一章中解释。
unix-basic-operators.htm
广告