千家信息网

Shell表达式与运算符有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍Shell表达式与运算符有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!3.1 条件表达式表达式示例[ expression ][ 1 -eq 1 ]` e
千家信息网最后更新 2026年10月31日Shell表达式与运算符有哪些

这篇文章主要介绍Shell表达式与运算符有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

3.1 条件表达式

表达式

示例

[ expression ][ 1 -eq 1 ]
` expression `` 1 -eq 1 `
test expressiontest 1 -eq 1 ,等同于[]

3.2 整数比较符

比较符

描述

示例

-eq,equal等于[ 1 -eq 1 ]为true
-ne,not equal不等于[ 1 -ne 1 ]为false
-gt,greater than大于[ 2 -gt 1 ]为true
-lt,lesser than小于[ 2 -lt 1 ]为false
-ge,greater or equal大于或等于[ 2 -gt 1 ]为true
-le,lesser or equal小于或等于[ 2 -le 1 ]为false

3.3 字符串比较符

运算符

描述

示例

==等于[ "a" == "a" ]为true
!=不等于[ "a" != "a" ]为false
>大于,判断字符串时根据ASCII码表顺序,不常用

在[]表达式中:[ 2 \> 1 ]为true

在[[]]表达式中:[[ 2 > 1 ]]为true

在(())表达式中:(( 3 > 2 ))为true

<小于,判断字符串时根据ASCII码表顺序,不常用

在[]表达式中:[ 2 \< 1 ]为false

在[[]]表达式中:[[ 2 < 1 ]]为false

在(())表达式中:(( 3 < 2 ))为false

>=大于等于在(())表达式中:(( 3 >= 2 ))为true
<=小于等于在(())表达式中:(( 3 <= 2 ))为false
-n字符串长度不等于0为真

VAR1=1;VAR2=""

[ -n "$VAR1" ]为true

[ -n "$VAR2" ]为false

-z字符串长度等于0为真

VAR1=1;VAR2=""

[ -z "$VAR1" ]为false

[ -z "$VAR2" ]为true

str字符串存在为真

VAR1=1;VAR2=""

[ $VAR1 ]为true

[ $VAR2 ]为false

需要注意的是,使用-z或-n判断字符串长度时,变量要加双引号。

举例说明:

# [ -z $a ] && echo yes || echo noyes# [ -n $a ] && echo yes || echo noyes# 加了双引号才能正常判断是否为空# [ -z "$a" ] && echo yes || echo noyes# [ -n "$a" ] && echo yes || echo nono# 使用了双中括号就不用了双引号# [[ -n $a ]] && echo yes || echo nono# [[ -z $a ]] && echo yes || echo noyes

3.4 文件测试

测试符

描述

示例

-e文件或目录存在为真[ -e path ] path存在为true
-f文件存在为真[ -f file_path ] 文件存在为true
-d目录存在为真[ -d dir_path ] 目录存在为true
-r有读权限为真[ -r file_path ] file_path有读权限为true
-w有写权限为真[ -w file_path ] file_path有写权限为true
-x有执行权限为真[ -x file_path ] file_path有执行权限为true
-s文件存在并且大小大于0为真[ -s file_path ] file_path存在并且大小大于0为true

3.5 布尔运算符

运算符

描述

示例

!非关系,条件结果取反[ ! 1 -eq 2 ]为true
-a和关系,在[]表达式中使用[ 1 -eq 1 -a 2 -eq 2 ]为true
-o或关系,在[]表达式中使用[ 1 -eq 1 -o 2 -eq 1 ]为true

3.6 逻辑判断符

判断符

描述

示例

&&逻辑与,在[[]]和(())表达式中或判断表达式是否为真时使用

[[ 1 -eq 1 && 2 -eq 2 ]]为true

(( 1 == 1 && 2 == 2 ))为true

[ 1 -eq 1 ] && echo yes 如果&&前面表达式为true则执行后面的

||逻辑或,在[[]]和(())表达式中或判断表达式是否为真时使用

[[ 1 -eq 1 || 2 -eq 1 ]]为true

(( 1 == 1 || 2 == 2 ))为true

[ 1 -eq 2 ] || echo yes 如果||前面表达式为false则执行后面的

3.7 整数运算

运算符

描述

+加法
-减法
*乘法
/除法
%取余

运算表达式

示例

$(())$((1+1))
$[]$[1+1]

上面两个都不支持浮点运算。

$(())表达式还有一个用途,三目运算:

# 如果条件为真返回1,否则返回0# echo $((1<0))       0# echo $((1>0))1指定输出数字:# echo $((1>0?1:2))   1# echo $((1<0?1:2))2

注意:不支持字符串输出

除了Shell本身的算数运算表达式,还有几个命令支持复杂的算数运算:

命令

描述

示例

let赋值并运算,支持++、--

let VAR=(1+2)*3 ; echo $VAR

x=10 ; y=5

let x++;echo $x 每执行一次x加1

let y--;echo $y 每执行一次y减1

let x+=2 每执行一次x加2

let x-=2 每执行一次x减2

expr乘法*需要加反斜杠转义\*

expr 1 \* 2 运算符两边必须有空格

expr \( 1 + 2 \) \* 2 使用双括号时要转义

bc计算器,支持浮点运算、平方等

bc本身就是一个计算器,可直接输入命令,进入解释器。

echo 1 + 2 |bc 将管道符前面标准输出作为bc的标准输入

echo "1.2+2" |bc

echo "10^10" |bc

echo 'scale=2;10/3' |bc 用scale保留两位小数点

博客地址:http://lizhenliang.blog.51cto.com

QQ群:323779636 (Shell/Python运维开发群)

由于Shell不支持浮点数比较,可以借助bc来完成需求:

# echo "1.2 < 2" |bc1# echo "1.2 > 2" |bc0# echo "1.2 == 2.2" |bc0# echo "1.2 != 2.2" |bc1看出规律了嘛?运算如果为真返回1,否则返回0,写一个例子:# [ $(echo "2.2 > 2" |bc) -eq 1 ] && echo yes || echo noyes# [ $(echo "2.2 < 2" |bc) -eq 1 ] && echo yes || echo nono

expr还可以对字符串操作:

获取字符串长度:# expr length "string"6截取字符串:# expr substr "string" 4 6ing获取字符在字符串中出现的位置:# expr index "string" str1# expr index "string" i4获取字符串开始字符出现的长度:# expr match "string" s.*6# expr match "string" str3

看到这里,想一想里面所讲的小括号、中括号的用途,是不是有点懵逼了。那我们总结一下!

( )

用途1:在运算中,先计算小括号里面的内容

用途2:数组

用途3:匹配分组

(( ))

用途1:表达式,不支持-eq这类的运算符。不支持-a和-o,支持<=、>=、<、>这类比较符和&&、||

用途2:C语言风格的for(())表达式

$( )执行Shell命令,与反撇号等效
$(( ))

用途1:简单算数运算

用途2:支持三目运算符 $(( 表达式?数字:数字 ))

[ ]条件表达式,里面不支持逻辑判断符
` `条件表达式,里面不支持-a和-o,不支持<=和>=比较符,支持-eq、<、>这类比较符。支持=~模式匹配,也可以不用双引号也不会影响原意,比[]更加通用
$[ ]简单算数运算
{ }对逗号(,)和点点(...)起作用,比如touch {1,2}创建1和2文件,touch {1..3}创建1、2和3文件
${ }

用途1:引用变量

用途2:字符串处理

以上是"Shell表达式与运算符有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

表达式 运算 字符 支持 字符串 用途 运算符 示例 文件 权限 条件 长度 命令 引号 逻辑 内容 括号 数字 目录 输出 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南真二互联网科技有限公司 互联网最新的科技有限公司 杭州互联网科技公司 紫鲸互联网科技 易通互联网络科技有限公司 互联网科技logo设计 沃里互联网科技 广西拼得多互联网科技有限公司 卫星互联网科技股票 互联网软件和科技 崇明区互联网教育科技诚信经营 花神(南京)互联网科技有限公司 国大互联网教育科技有限公司工作 合肥互联网科技公司公章图片 山东子淼互联网科技有限公司 小米互联网科技园入驻 互联网科技股为什么大涨 互联网安防科技感 互联网科技新闻 河南商务圈互联网科技有限公司 喔噻互联网科技有限公司 科技类互联网 撒么互联网科技公司 四川狮子座互联网科技 美国互联网前沿科技 海南科技产业互联网平台 开一家科技互联网公司需要多少钱 城市宝互联网科技有限公司 江苏互联网智能科技产品出厂价 现代科技的标志之一的互联网
0