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 和 ...
随机推荐
- Unity新功能|全息模拟器
http://forum.china.unity3d.com/thread-21539-1-1.html
- ireport制作小技巧<Reproduce>
首先ireport中大小写问题: 1.parameter中如果小写,引用也小写 2.$F{},一般都大写 3.子报表中引用父报表中查询出来的值时,只需要小写即可,即在子报表的parameter中只需要 ...
- 使用getopt_long来解析参数的小函数模板
getopt_long原型 #define no_argument 0 #define required_argument 1 #define optional_argument 2 struct o ...
- 从贝叶斯到粒子滤波——Round 2
上一篇博文已经讲了贝叶斯滤波的原理以及公式的推导:http://www.cnblogs.com/JunhaoWu/p/bayes_filter.html 本篇文章将从贝叶斯滤波引入到粒子滤波,讲诉粒子 ...
- CSS水平居中/垂直居中的N个方法
我看最近微博流行CSS居中技术,老外码农争相写相关的文章,一篇赛一篇的长啊,我把几篇归纳总结了一下,算是笔记. 孔乙己曾说:"茴香豆的回字有四种写法",万一哪天有个面试官问你:&q ...
- js实现弹框及自动关闭
<SCRIPT LANGUAGE="javascript"> < !-- window.open (''page.html'',''newwindow'',''h ...
- 国内可用maven repository 配置
国内可用maven repository 配置 发表于2016/1/4 23:08:04 10235人阅读 分类: maven 鉴于一些原因,从maven中央仓库download依赖包时,被各种折磨 ...
- C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用
前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...
- django model Meta选项
可用的 Meta 选项 abstract Options.abstract 如果 abstract = True ,这个 model 就是一个 抽象基类 . app_label Options.app ...
- Android基础总结(二)
常见布局 相对布局 RelativeLayout 组件默认左对齐.顶部对齐 设置组件在指定组件的右边 android:layout_toRightOf="@id/tv1" 设置在指 ...