shell--3.运算符
1.注意
原生bash不支持简单的数学运算,但是可以用其它命令来实现如 awk 和expr ,expr最常用
val=`expr 2 + 3`
echo "结果 ${val}" #打印5
(1)表达式和运算符之间要有空格,如2+2是不对的,要写成 2 + 2
(2)完整的表达式要被` ` 包含,这不是单引号,是反引号在Esc 键下面
2.算术运算符
#!/bin/bash
a=20
b=3 echo "a+b结果: `expr $a + $b`" echo "a-b结果: `expr $a - $b`" echo "a*b结果: `expr $a \* $b`" echo "a/b结果: `expr $a / $b`" echo "a对b取余: `expr $a % $b`" a=30
echo "a重新赋值为 ${a}" if [ $a == $b ]
then
echo "a等于b"
fi
if [ $a != $b ]
then
echo "a不等于b"
fi
#注意,if和后面的[] 之间要有空格,[] 和里面的$a之间要有空格,==与$a和$b之间要有空格
乘法之前要有反斜杠
3.关系运算符
(1) 关系运算符只支持数字,不支持字符串,除非字符串的值也是数字
a. -eq,判断两个数是否相等,相等返回true
b=30
if [ $a -eq $b ]
then
echo "a等于b"
else
echo "a不等于b"
fi
b. -ne,判断两个数是否相等,不相等返回true
if [ $a -ne $b ]
then
echo "-ne a不等于b"
else
echo "-ne a等于b"
fi
c. -gt, 检测左边的数是否大于右边的,如果是返回true
if [ $a -gt $b ]
then
echo "-gt a大于b"
else
echo "-gt a小于b"
fi
d. -lt , 检测左边的数是否小于右边的,如果是返回true
if [ $a -lt $b ]
then
echo "-lt a小于b"
else
echo "-lt a大于b"
fi
e. -ge , 检测左边的数是否大于等于右边的数
if [ $a -ge $b ]
then
echo "-ge a大于等于b"
else
echo "-ge a小于等于b"
fi
f. -le , 检测左边的数是否小于等于右边的数
if [ $a -le $b ]
then
echo "-le a小于等于b"
else
echo "-le a大于等于b"
fi
4. 布尔运算符
a. !,非运算,表达式返回true,则返回false
if [ $c != $d ]
then
echo "c!=d : c不等于d"
else
echo "c!=d : c等于d"
fi
b. -o,或运算,有一个返回true,则返回true
d=10
if [ $c -gt $d -o $c -eq $d ]
then
echo "-o c大于或等于d"
else
echo "-o c小于d"
fi
c. -a,与运算,两个都返回true,才返回true
if [ $c -gt $d -a $c -ne $d ]
then
echo "-a c大于d"
else
echo "-a c小于或等于d"
fi
5. 逻辑运算符
a. &&,逻辑的and
c=10
d=20 if [[ $c -lt 100 && $d -gt 100 ]]
then
echo "&& 返回true"
else
echo "&& 返回false"
fi
b. ||,逻辑的或
if [[ $c -lt 100 || $d -lt 100 ]]
then
echo "|| 返回true"
else
echo "|| 返回false"
fi
6. 字符串运算符
a. =,检测两个字符串是否相等,相等返回true
m="abc"
n="def"
k=""
###等于
if [ $m = $n ]
then
echo "= m等于n "
else
echo "= m不等于n "
fi
b. !=,检测两个字符串是否不相等,不相等返回true
if [ $m != $n ]
then
echo "!= m不等于n"
else
echo "!= m等于n"
fi
c. -z , 检测字符串长度是否为0,为0返回true
if [ -z $m ]
then
echo "-z m长度是0"
else
echo "-z m长度不是0"
fi if [ -z $k ]
then
echo "k长度是0"
fi
d. -n , 检测字符串长度是否为0,不为0返回true
if [ -n $m ]
then
echo "-n m长度不为0"
else
echo "-n m长度是0"
fi
e. str , 检测字符串是否为空,不为空返回true
k=" "
echo "k的长度" ${#k}
if [ $k ]
then
echo "k不为空"
else
echo "k为空"
fi
打印k的长度是3,k为空
7. 文件运算符
a. -b , 是否是块设备
file_temp="/opt/shell_test/test.sh"
if [ -b $file_temp ]
then
echo "${file_temp} 是块设备"
else
echo "${file_temp} 不是块设备"
fi
b. -e ,文件是否存在
c. -d , 文件是否是目录
d. -s ,文件是否为空
e. -r ,文件是否可读
f. -w , 文件是否可写
g. -x , 文件是否可执行
file_temp="/opt/shell_test/arry.sh"
#-b 文件是否是块设备
if [ -b $file_temp ]
then
echo "${file_temp} 是块设备"
else
echo "${file_temp} 不是块设备"
fi #文件是否存在
if [ -e $file_temp ]
then
echo "-e 文件存在"
else
echo "-e 文件不存在"
fi #是否是目录
if [ -d $file_temp ]
then
echo "-d 文件是目录"
else
echo "-d 文件不是目录"
fi #是否为空
if [ -s $file_temp ]
then
echo "-s 文件为空"
else
echo "-s 文件不为空"
fi #是否可读
if [ -r $file_temp ]
then
echo "-r 文件可读"
else
echo "-r 文件不可读"
fi #是否可写
if [ -w $file_temp ]
then
echo "-w 文件可写"
else
echo "-w 文件不可写"
fi #是否可执行
if [ -x $file_temp ]
then
echo "-x 文件可执行"
else
echo "-x 文件不可执行"
fi
shell--3.运算符的更多相关文章
- (转)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 和 ...
- 3. Shell 基本运算符
1. 概述 1.1 Shell 支持多种运算符,包括以下几种 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 1.2 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例 ...
- [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 和 ...
随机推荐
- 2016.10.29 NOIP模拟赛 PM 考试整理
300分的题,只得了第三题的100分. 题目+数据:链接:http://pan.baidu.com/s/1o7P4YXs 密码:4how T1:这道题目存在着诸多的问题: 1.开始的序列是无法消除的( ...
- Spark的精简安装步骤---陈楠心血总结
1.下载解压 (1)安装Scala-2.10.4并解压 (2)/etc/profile加入PATH路径 (3)source /etc/profile使PATH的配置生效 (4)下载并解压spark-1 ...
- 第二章 spring
一.Bean作用域 spring容器创建的时候,会将所有配置的bean对象创建出来,默认bean都是单例的.代码通过getBean()方法从容器获取指定的bean实例,容器首先会调用Bean类的无参构 ...
- C/C++编程语言学习资料尽收眼底 电子书+视频教程
Visual C++(VC/MFC)学习电子书及开发工具下载请看这里 史无前例的网络最全最强C/C++资料索引: C/C++编程语言学习资料尽收眼底 电子书+视频教程 VC++/MFC(VC6)开发技 ...
- JavaScript 输出
javascript 没有任何打印或者输出的函数. 一.javascript 显示数据 javacript可以通过不同的方式来输出数据: 1.使用window.alert()弹出警告框 2.使用doc ...
- HttpContext.Current.Session.SessionID相关问题及备忘
今天Tony提到说我们系统中会利用如下代码来判断用户是否过期. if (string.IsNullOrEmpty(UserContext.ConnectionSessionId)) { LogUIFa ...
- jquery鼠标右键事件
$('body').live("mousedown",function(e){ $('body').bind("contextmenu",function(e) ...
- IDEA 分享项目到 Git@OSC/GitHub
前提:新开项目,需要在 Git@OSC 建立版本库管理. 1.当然是先在Git@OSC上创建仓库,拿到Git@OSC仓库的HTTP连接 https://git.oschina.net/*****/** ...
- Linux实现https方式访问站点
超文本传送协议(HyperText Transfer Protocol,HTML)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到wel浏览器. HTML的特点: 1.支持客户/服务器模 ...
- mysql中价格用什么数据类型表示最佳?
DECIMAL和NUMERIC都行DECIMAL和NUMERIC类型在MySQL中视为相同的类型.它们用于保存必须为确切精度的值,例如货币数据.当声明该类型的列时,可以(并且通常要)指定精度和标度:例 ...