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. Struts2 internationalization(国际化)

    1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素.换言之,应用程序的功 ...

  2. NSURLCache

    属性介绍: //获取当前应用的缓存管理对象 + (NSURLCache *)sharedURLCache; //设置自定义的NSURLCache作为应用缓存管理对象 + (void)setShared ...

  3. svg拉伸,原来凹凸可以这么玩

    原文:http://www.smartjava.org/content/render-geographic-information-3d-threejs-and-d3js The last coupl ...

  4. 深入理解Java:类加载机制及反射

    说明:本文乃学习整理参考而来. 一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构 ...

  5. Convertion of grey code and binary 格雷码和二进制数之间的转换

    以下转换代码摘自维基百科 Wikipedia: /* The purpose of this function is to convert an unsigned binary number to r ...

  6. 使用TaskManager爬取2万条代理IP实现自动投票功能

    话说某天心血来潮想到一个问题,朋友圈里面经常有人发投票链接,让帮忙给XX投票,以前呢会很自觉打开链接帮忙投一票.可是这种事做多了就会考虑能不能使用工具来进行投票呢,身为一名程序猿决定研究解决这个问题. ...

  7. PlayMaker的应用

    PlayMaker属于一个可视化的状态机编辑工具,集成到了Unity的IDE里,在Unity的市场上很受欢迎,本人看见后第一感觉是跟CryEngine的那个状态机特别相似.CE的那个状态机编辑器其实是 ...

  8. 数据存储单位的换算关系(TB、PB、EB、ZB、YB)

  9. 在eclipse中部署jsp项目

    昨天在做实验的时候发现图片的路径不对,怎么改都不对,后来想到在浏览器中输入localhost:8080是tomcat服务器的路径,没找到资源是不是就是项没有部署到tomcat中,去tomcat的web ...

  10. 【poj1742】 Coins

    http://poj.org/problem?id=1742 (题目链接) 题意 给出n钟纸币,每种纸币面值为a[i],数量为c[i],问能够成多少数值小于等于m的数. Solution 先想到了容斥 ...