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.运算符的更多相关文章

  1. (转)Shell——基本运算符

    Shell 基本运算符 原文:http://blog.csdn.net/sinat_36053757/article/details/70319481 Shell 和其他编程语言一样,支持多种运算符, ...

  2. 五、Shell 基本运算符

    Shell 基本运算符 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令 ...

  3. Shell基本运算符之字符串运算符

    Shell基本运算符 1.字符串运算符 常用的字符串运算符 运算符 说明 例子 = 检测两字符串是否相等,相等返回true [ $a = $b ] != 检测两个字符串是否部相等,不相等返回true ...

  4. Shell基本运算符之布尔运算符、逻辑运算符

    Shell基本运算符 =============================摘自与菜鸟教程=============================== 1.布尔运算符 ! 非运算,表达式为tru ...

  5. Shell 基本运算符

    Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...

  6. 3. Shell 基本运算符

    1. 概述 1.1 Shell 支持多种运算符,包括以下几种 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 1.2 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例 ...

  7. [Linux]Shell的运算符和特殊变量

    说起Shell脚本,免不了用变量.特别是对于这种一堆符号表示变量的语言来说,你不了解一下相关变量的本意,根本无从下手.譬如写个循环遍历,$#就起了好大作用.所以还是有必要记录一下,也是对学习的一个笔记 ...

  8. shell 算术运算符

    算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30. - 减法 `expr $a - $b` ...

  9. (二)Linux Shell编程——运算符、注释

    2.7 Shell运算符 Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符.原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...

  10. Shell 基本运算符(转)

    Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 ...

随机推荐

  1. 一个页面从输入URL到页面加载显示完成,这个过程都发生了什么?

    对于网址栏的URL不同的操作方式有不同的加载资源.获取数据的方式,下面的详细过程针对"在地址栏输入URL,按enter(回车)键加载资源"此种操作方式做解析,其它的方式的过程大同小 ...

  2. save(),saveOrUpdate(),merge()的区别

    Save save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原因.假如两个实体之间有关系(例如empl ...

  3. [转载]我的Java后端书架 (2016年暖冬4.0版)

      [转载]我的Java后端书架 (2016年暖冬4.0版) ps:最近正在初学Java,有一些其他语言的底子,但是还是要好好看书,好好练习,网上找了好久,都没有这份书单来的实用,特意转载过来,方便以 ...

  4. Hololens入门之语音识别(语音命令)

    http://blog.csdn.net/sun_t89/article/details/52430923

  5. .NET定时任务执行管理器开源组件–FluentScheduler

    在日常项目里通常会遇到定时执行任务的需求,也就是定时器..NET Framework里关于定时器的类有3个,分别是System.Windows.Forms.Timer.System.Timers.Ti ...

  6. Qt——设计颜色编辑器

    Qt中有一些封装好的对话框,比如QMessageBox.QColorDialog等,用途很广,但缺点是样式难以改变,直接拿来用可能与我们自己的系统样式不搭配,显得很难看. 所以我在无聊的时候,就自己写 ...

  7. OrcharNoCMS中的发布订阅使用

    对于Orchard里面的EventBus,没有太多的文章去介绍说明.它最好的应用是发布订阅的应用. 使用介绍: 在Car模块中,我们定义一个接口,继承IEventHandler接口. 当我们在创建一条 ...

  8. MVP之V和P的交互

    三者之间的关系 在MVP初探里简单的描述了V和P之间是如何交互的. 无论是PV还是SC,M\V\P这三者之间的关系并没有发生改变,V只是前端的客户代理承现展显数据,P是如何处理客户交互行为的决策者. ...

  9. strtol 函数用法

    strtol是一个C语言函数,作用就是将一个字符串转换为长整型long,其函数原型为: long int strtol (const char* str, char** endptr, int bas ...

  10. springmvc请求接收参数的几种方法

    一.通过@PathVariable获取路径中的参数 @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GE ...