06-Shell基本运算符

本文详细介绍了Shell脚本中的各种运算符,包括算数、关系、布尔、字符串及逻辑运算符。通过示例展示了如何进行数学计算、条件判断以及逻辑操作。同时,强调了运算符使用时的注意事项,如空格的使用、表达式的正确格式等。
摘要由CSDN通过智能技术生成

1、Shell支持的运算符:

  • 算数运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 逻辑运算符
  • 文件测试运算符

原生bash不支持简单的数学运算,需要通过其他命令来实现,例如:awk,expr。
可以使用expr完成表达式的求值操作。

2、Shell运算符需要注意的点

  • 表达式和运算符之间要有空格,比如2+3是不对的,需要写成 2 + 3
  • 完成的表达式需要被 ``包含,此符号为位于键盘ESC下的反引号
  • 条件表达式需要放在方括号之间,并且需要有空格,比如:[$a==$b]是错误的,必须写成[ $a == $b]
  • 乘号(*)前面必须加反斜杠()才能实现乘法运算
  • 关系运算符只支持数字,不支持字符串,除非字符串的值是数字

3、算术运算符

#!/bin/bash
a=10
b=20

val=`expr $a + $b`
echo "a+b= ${val}"

val=`expr $a - $b`
echo "a-b=${val}"

val=`expr ${a} \* ${b}`
echo "a*b=${val}"

val=`expr $a / $b`
echo "a/b=${val}"

val=`expr $a % $b`
echo "a%b=${val}"

a=$b
echo $a

运行结果

a+b= 30
a-b=-10
a*b=200
a/b=0
a%b=10
20
a==b?20 == 20
a!=b?20 != 20

4、关系运算符

#!/bin/bash
a=10
b=20

if [ $a -eq $b ]
then 
	echo "$a 等于 $b"
else
	echo "$a 不等于 $b"
fi

# -ne 是否相等
# -gt 左>右
# -lt 左<右
# -ge 左≥右
# -le 左≤右

运行结果:

10 不等于 20

5、布尔运算符

#!/bin/bash
a=10
b=20

# !非运算
if [ $a != $b ]
then 
	echo "$a 不等于 $b"
else
	echo "$a 等于 $b"
fi

# -o 或运算
if [ $a -gt 15 -o $b -lt 30 ]
then 
	echo "$a 大于15或者 $b 大于30"
else
	echo "不满足"
fi
# -a 与运算
if [ $a -gt 15 -a $b -lt 30 ]
then 
	echo "$a 大于15并且 $b 大于30"
else
	echo "不满足"
fi

运行结果:

10 不等于 20
10 大于15或者 20 大于30
不满足

6、逻辑运算符

#!/bin/bash
a=10
b=20

# && 逻辑and
if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

# || 逻辑or
if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

运行结果

返回 false
返回 true

7、字符串运算符

#!/bin/bash
a="abc"
b="efg"

#检测两个字符串是否相等,相等返回 true
if [ $a = $b ]
then
   echo "$a = $b : a 等于 b"
else
   echo "$a = $b: a 不等于 b"
fi

#检测两个字符串是否不相等,不相等返回 true。
if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi

#	检测字符串长度是否为0,为0返回 true。
if [ -z $a ]
then
   echo "-z $a : 字符串长度为 0"
else
   echo "-z $a : 字符串长度不为 0"
fi

#检测字符串长度是否不为 0,不为 0 返回 true。
if [ -n "$a" ]
then
   echo "-n $a : 字符串长度不为 0"
else
   echo "-n $a : 字符串长度为 0"
fi

#检测字符串是否为空,不为空返回 true。
if [ $a ]
then
   echo "$a : 字符串不为空"
else
   echo "$a : 字符串为空"
fi

运行结果

abc = efg: a 不等于 b
abc != efg : a 不等于 b
-z abc : 字符串长度不为 0
-n abc : 字符串长度不为 0
abc : 字符串不为空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值