linux脚本乘法运算符,Shell脚本入门 [II.Shell运算符]

Shell 基本运算符

Shell 支持的运算符包括

算数运算符

关系运算符

布尔运算符

字符串运算符

文件测试运算符

算数运算

原生bash不支持简单的算数运算,但是可以通过其他命令来实现,例如awk和expr,常用的是expr。

expr是一款表达式计算工具,使用它能完成表达式的求值操作。语法为:`expr 表达式`例如:`expr a + b`;在mac中expr的语法是:$(expr 表达式)例如:$(expr a + b)。

使用[]执行算术。比expr更简单的可以使用[]执行算数运算,使用expr做运算时乘法运算*必须加转义符\,才能实现乘法运算;使用[]则不需要转义。

#!/bin/bash

# 表达式和运算符之间要有空格,a+b写成:a + b

# 完整的表达式被 ` ` 包含, ` 反引号

var1=`expr 2 + 2` # 计算结果是 4

# 乘号 * 前面必须加反斜杠 \ 才能实现乘法运算,其他的运算不需要

var2=`expr 2 \* 2` # 计算结果是 4

# 在Mac中shell的expr语法是:$(expr 表达式)

var3=$(expr 2 + 2) # 计算结果是 4

var4=$(expr 2 \* 2) # 计算结果是 4

# 使用 [] 进行算数运算,乘法运算符 * 不需要转义

var5=$[2 + 2] # 计算结果是 4

var6=$[2 * 2] # 计算结果是 4

常用算数运算符有+、-、*、/、%(取余)、=(赋值),条件表达式运算符有==(相等。比较两个数字是否相同)、!=(不相等,比较两个数字是否不同),注意:条件表达式要放在方括号([])内,并且要有空格,例如:比较变量a和b是否相等[ $a == $b ]。

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

下表列出了常用的关系运算符,假定变量 a=10,b=20:

运算符

说明

举例

-eq

检测两个数是否相等,相等返回true

[ $a -eq $b ] 返回false

-ne

检测两个数是否不相等,不相等返回true

[ $a -ne $b ]返回true

-gt

检测左边的数是否大于右边的,如果是,则返回true

[ $a -gt $b ]返回false

-lt

检测左边的数是否小于右边的,如果是,则返回true

[ $a -lt $b ]返回true

-ge

检测左边的数是否大于等于右边的,如果是,则返回true

[ $a -ge $b ]返回false

-le

检测左边的数是否小于等于右边的,如果是,则返回true

[ $a -le $b ]返回true

布尔运算符

下表列出了常用的布尔运算符,假定a=10,b=20:

运算符

说明

举例

!

非运算,表达式为true则返回false,否则返回true

[ !false ] 返回true

-o

或运算,有一个表达式为true则返回true

[ $a -lt 20 -o $b -gt 100 ]返回true

-a

与运算,两个表达式都为true才返回true

[ $a -lt 20 -a $b -gt 100 ]返回false

逻辑运算符

Shell的逻辑运算符如下,假定a=10,b=20:

运算符

说明

举例

&&

逻辑的AND

[[ $a -lt 100 && $b -gt 100 ]]返回false

||

逻辑的OR

[[ $a -lt 100 || $b -gt 100 ]]返回true

字符串运算符

Shell的字符串运算度如下,假定a="abc",b="efg"。

运算符

说明

举例

=

检测两个字符串是否相等,相等返回true

[ $a = $b ]返回false

!=

检测两个字符串是否相等,不相等返回true

[ $a != $b ]返回true

-z

检测字符串长度是否为0,为0返回true

[ -z $a ]返回false

-n

检测字符串长度是否为0,不为0返回true

[ -n $a ]返回true

str

检测字符串是否为空,不为空返回true

[ $a ]返回true

>

检测左边是否比右边大,如果是,返回true

[ $a > $b ]返回false

<

检测左边是否比右边小,如果是,返回true

[ $a < $b ]返回true

文件测试运算符

文件测试运算符用于检测Uinx文件的各种属性。

操作符

说明

举例

-b file

检测file是否是块设备文件,如果是,则返回true

[ -b $file ]返回false

-c file

检测file是否是字符设备文件,如果是,则返回true

[ -c $file ] 返回false

-d file

检测file是否存在并是目录,如果是,则返回true

[ -d $file ]返回false

-f file

检测file是否存在并是普通文件(既不是目录,也不是设备文件),如果是,则返回true

[ -f $file ]返回true

-g file

检测file是否设置了SGID位,如果是,则返回true

[ -g $file ]返回false

-k file

检测file是否设置了粘着位(Sticky Bit),如果是,则返回true

[ -k $file ]返回false

-p file

检测file是否是有名管道,如果是,则返回true

[ -p $file ]返回false

-u file

检测file是否设置了SUID位,如果是,则返回true

[ -u $file ]返回false

-r file

检测file是否存在并可读,如果是,则返回true

[ -r $file ]返回true

-w file

检测file是否可写,如果是,则返回true

[ -w $file ]返回true

-x file

检测file是否可执行,如果是,则返回true

[ -x $file ]返回true

-s file

检测file是否存在并非空(文件大小是否大于0),不为空返回true

[ -s $file ]返回true

-e file

检测file(包括目录)是否存在,如果是,则返回true

[ -e $file ]返回true

-O file

检查file是否存在并属当前用户所有

[ -O $file ]返回true

-G file

检查file是否存在并且默认组与当前用户相同

[ -G $file ]返回true

file1 -nt file2

检查file1是否比file2新

[ $file1 -nt $file2 ]返回true

file1 -ot file2

检查file1是否比file2旧

[ $file1 -ot $file2 ]返回false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值