当前位置: 首页 > news >正文

【学习分享】shell基础-运算符

1.4 运算符
1.4.1 算数运算符

和大多数编程语言一样,包含+ 、-、*、/、%、=、==、!= ,具体的可以自己了解。

#原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
#!/bin/bash
val=`expr 1 + 1`
echo "和为:${val}" #输出2
​
val=`expr 1 \* 1`
echo "积为:${val}" #输出1
​
val=`expr 1 - 1`
echo "差为:${val}"
​
val=`expr 8 / 2`
echo "商为:${val}"
​
val=`expr 8 % 3`
echo "余数为:${val}"
1.4.2 关系运算符

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

  • -eq:判断两个数是否相等,相等返回true

  • -ne:判断两个数是否不相等,不相等返回true

  • -gt:左边数字是否大于右边,若是,返回true

  • -lt:左边的数字是否小于右边,若是,返回true

  • -ge:左边的数字是否大于等于右边的,若是,返回true

  • -le:左边的数字是否小于等于右边的,若是,返回true

#!/bin/bash
#代码片来自菜鸟编程
a=10
b=20
if [ $a -eq $b ]
thenecho "$a -eq $b : a 等于 b"
elseecho "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
thenecho "$a -ne $b: a 不等于 b"
elseecho "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
thenecho "$a -gt $b: a 大于 b"
elseecho "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
thenecho "$a -lt $b: a 小于 b"
elseecho "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
thenecho "$a -ge $b: a 大于或等于 b"
elseecho "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
thenecho "$a -le $b: a 小于或等于 b"
elseecho "$a -le $b: a 大于 b"
fi
1.4.3 布尔运算符

与或非的运算逻辑与其他的编程语言一致

  • !:运算

  • -o:运算

  • -a:运算

#!/bin/bash
#代码片来自菜鸟编程
a=10
b=20
​
if [ $a != $b ]
thenecho "$a != $b : a 不等于 b"
elseecho "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
thenecho "$a 小于 100 且 $b 大于 15 : 返回 true"
elseecho "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
thenecho "$a 小于 100 或 $b 大于 100 : 返回 true"
elseecho "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
thenecho "$a 小于 5 或 $b 大于 100 : 返回 true"
elseecho "$a 小于 5 或 $b 大于 100 : 返回 false"
fi
1.4.4 逻辑运算符

和布尔有点像,只不过这个是数学中的逻辑符号

  • &&:逻辑的and,全真才为真,一假则假

  • ||:逻辑或,一真则真,全假才为假

#!/bin/bash
#代码片来自菜鸟编程
​
a=10
b=20
​
if [[ $a -lt 100 && $b -gt 100 ]]
thenecho "返回 true"
elseecho "返回 false"
fi
​
if [[ $a -lt 100 || $b -gt 100 ]]
thenecho "返回 true"
elseecho "返回 false"
fi
1.4.5 字符串运算符

这些运算符多用于字符串的操作

  • =:两个字符串如果相等,返回真

  • !=:两个字符串如果不相等,返回假

  • -z:字符串长度为0,则返回真

  • -n:字符串长度不为0,返回真

  • $:字符串内容不为空,返回真

#!/bin/bash
# 代码片来自菜鸟教程
a="abc"
b="efg"
​
if [ $a = $b ]
thenecho "$a = $b : a 等于 b"
elseecho "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
thenecho "$a != $b : a 不等于 b"
elseecho "$a != $b: a 等于 b"
fi
if [ -z $a ]
thenecho "-z $a : 字符串长度为 0"
elseecho "-z $a : 字符串长度不为 0"
fi
if [ -n "$a" ]
thenecho "-n $a : 字符串长度不为 0"
elseecho "-n $a : 字符串长度为 0"
fi
if [ $a ]
thenecho "$a : 字符串不为空"
elseecho "$a : 字符串为空"
fi
1.4.6 文件测试运算符

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

  • -b file:若文件是块设备文件,返回true

  • -c file:若文件是字符设备文件,返回true

  • -d file:若文件为目录,返回true

  • -f file:若文件是普通文件,返回true

  • -g file: 若文件设置了SGID位,返回true

  • -k file:若文件设置了sticky bit,返回true

  • -p file:若文件设置了有名管道,返回true

  • -u file:若文件设置了SUDI位,返回true

  • -f file:若文件可读,返回true

  • -w file:若文件可写,返回true

  • -x file:若文件可执行,返回true

  • -s file:若文件部不为空,返回true

  • -e file:若文件存在,返回true

1.4.7 自增/自减

和java等一些主流语言的自增和自减的逻辑是一样的,但是shell使用的是let命令

#!/bin/bash
num=1
let num++
let num++
let num--
echo ${num} # 输出1

http://www.lqws.cn/news/184843.html

相关文章:

  • ai流式文字返回前端和php的处理办法
  • 网络编程之服务器模型与UDP编程
  • 【Linux跬步积累】—— 网络编程套接字(二)
  • k8s入门教程(集群部署、使用,镜像拉取失败网络问题排查)
  • VTK|8.2.0升级到9.4.2遇到的问题及解决方法
  • 上市公司数字化转型分析报告_本报告基于CSMAR数据库中的企业数字化转型相关数据,使用Python对A股上市公司数字化转型情况进行全面分析
  • elasticsearch基本操作笔记
  • 02 nginx 的环境搭建
  • 12.5Swing控件3Jpanel JOptionPane
  • 机器学习笔记【Week7】
  • MS8258D 高增益带宽积 FET 输入放大器/激光雷达接收跨阻放大器
  • 【Linux】文件操作
  • SpringAI 1.0.0 正式版——利用Redis存储会话(ChatMemory)
  • 数据结构与算法——二叉树高频题目(1)
  • 【原神 × 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密!
  • CANFD 数据记录仪在汽车售后解决偶发问题故障的应用
  • [蓝桥杯]矩阵翻硬币
  • 矩阵QR分解
  • 配置git命令缩写
  • 数据库系统学习
  • 一些免费的大A数据接口库
  • 提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
  • Windows系统中如何使用符号链接将.vscode等配置文件夹迁移到D盘(附 CMD PowerShell 双版本命令)
  • 【51单片机】1. 基础点灯大师
  • AndroidR车机TextToSpeech音频焦点异常问题分析
  • 解决Zotero翻译插件Zotero PDF Translate无法正常翻译
  • android手势创建及识别保姆级教程
  • C# 快速检测 PDF 是否加密,并验证正确密码
  • 【QT常用技术讲解】多线程执行后台命令行的两种方式(后台运行和返回打印信息)
  • NoSQL之Redis哨兵