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. 2016.10.29 NOIP模拟赛 PM 考试整理

    300分的题,只得了第三题的100分. 题目+数据:链接:http://pan.baidu.com/s/1o7P4YXs 密码:4how T1:这道题目存在着诸多的问题: 1.开始的序列是无法消除的( ...

  2. Spark的精简安装步骤---陈楠心血总结

    1.下载解压 (1)安装Scala-2.10.4并解压 (2)/etc/profile加入PATH路径 (3)source /etc/profile使PATH的配置生效 (4)下载并解压spark-1 ...

  3. 第二章 spring

    一.Bean作用域 spring容器创建的时候,会将所有配置的bean对象创建出来,默认bean都是单例的.代码通过getBean()方法从容器获取指定的bean实例,容器首先会调用Bean类的无参构 ...

  4. C/C++编程语言学习资料尽收眼底 电子书+视频教程

    Visual C++(VC/MFC)学习电子书及开发工具下载请看这里 史无前例的网络最全最强C/C++资料索引: C/C++编程语言学习资料尽收眼底 电子书+视频教程 VC++/MFC(VC6)开发技 ...

  5. JavaScript 输出

    javascript 没有任何打印或者输出的函数. 一.javascript 显示数据 javacript可以通过不同的方式来输出数据: 1.使用window.alert()弹出警告框 2.使用doc ...

  6. HttpContext.Current.Session.SessionID相关问题及备忘

    今天Tony提到说我们系统中会利用如下代码来判断用户是否过期. if (string.IsNullOrEmpty(UserContext.ConnectionSessionId)) { LogUIFa ...

  7. jquery鼠标右键事件

    $('body').live("mousedown",function(e){ $('body').bind("contextmenu",function(e) ...

  8. IDEA 分享项目到 Git@OSC/GitHub

    前提:新开项目,需要在 Git@OSC 建立版本库管理. 1.当然是先在Git@OSC上创建仓库,拿到Git@OSC仓库的HTTP连接 https://git.oschina.net/*****/** ...

  9. Linux实现https方式访问站点

    超文本传送协议(HyperText Transfer Protocol,HTML)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到wel浏览器. HTML的特点: 1.支持客户/服务器模 ...

  10. mysql中价格用什么数据类型表示最佳?

    DECIMAL和NUMERIC都行DECIMAL和NUMERIC类型在MySQL中视为相同的类型.它们用于保存必须为确切精度的值,例如货币数据.当声明该类型的列时,可以(并且通常要)指定精度和标度:例 ...