Shell学习(四)Shell运算符
一、基础运算

- 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
- expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
#计算两个数之间的和
val=`expr 2 + 2`
echo "两数之和为 : $val" #输出:两数之和为 : 4
#计算两个数之间的乘积
val=`expr 2 \* 2`
echo "两数之乘积为 : $val" #输出:两数之乘积为 : 4
注意的地方:
- 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
- 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
- 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
条件表达式
条件表达式需要在首尾加上“ [ ] ”,并且要用空格间隔开。
#定义变量
a=10
b=20 #判断 a == b
if [ $a == $b ]
then
echo "a 等于 b"
fi #判断 a != b
if [ $a != $b ]
then
echo "a 不等于 b"
fi
二、关系运算
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

a=10
b=20
#判断两数是否相等
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
PS: 用test命令也可以实现相应的比较,详见:戳这里~
三、布尔运算

#判断两数大小
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
四、逻辑运算

a=10
b=20
#判断条件是否为真。外层的括号是判断条件的,内层的括号是获取两条件的与运算结果
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
五、字符串运算

a="abc"
b="efg" #判断字符串长度是否为0
if [ -z $a ]
then
echo "-z $a : 字符串长度为 0"
else
echo "-z $a : 字符串长度不为 0"
fi
六、文件测试运算

#定义一个变量,值为文件路径
file="/home/zh/zh/test/testShell.sh" #文件可读性判断
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi #文件可写性判断
if [ -w $file ]
then
echo "文件可写"
else
echo "文件不可写"
fi #文件可执行性判断
if [ -x $file ]
then
echo "文件可执行"
else
echo "文件不可执行"
fi
Shell学习(四)Shell运算符的更多相关文章
- Shell学习之Shell特性(一)
Shell学习之Shell特性 目录 命令和文件自动补齐功能 命令历史记忆功能 history.上下键.!number.!string.!$.!! 别名功能 alias.unalias cp.~use ...
- Shell学习笔记 - Shell变量
一.变量的命名 变量名必须以字母或下划线开头,由字母.数字.或下划线组成,变量名的长度不能超过255个字符. 二.变量的分类 1. 用户自定义变量 2. 环境变量 3. 位置参数变量 4. 预定义变量 ...
- shell 学习四十五天---xargs
当 find 产生一个文件列表时,该列表提供给另一个命令有时是很有用的.案例: $touch abc.c erd.c oiy.c $ll ./erd.c ./abc.c ./oiy.c $find - ...
- linux shell学习四
Shell分支语句 case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command ...
- shell学习四十九天----进程建立
进程 前言:进程指的是运行中程序的一个实例.新进程由fork()与execve()等系统调用所起始,然后运行,知道他们下达exit()系统调用为止. linux系统都支持多进程.尽管计算机看起来像是一 ...
- Shell 学习笔记之运算符
基本运算符 算术运算符 val = expr 2 + 2 需要注意的是 表达式和运算符之间需要有空格(比如2 + 2,不能是2+2) 两边最外面的字符是`,在esc键下面,不是引号哦 乘号* 前面必须 ...
- shell学习四十天----awk的惊人表现
awk的惊人表现 awk能够胜任差点儿全部的文本处理工作. awk 调用 1.调用awk: 方式一:命令行方式 awk [-F field-separator ] 'commands' inp ...
- shell学习四十八天----文件校验和匹配
文件校验和匹配 要是你怀疑可能有非常多文件具有同样的内文,而是用cmp或diff进行比較全部横队的比較,导致所花费的时间会随着文件数目增长成次方的增长. 这是能够使用file checksum(文件校 ...
- linux shell学习之shell流程控制
在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构 ...
- Shell学习——子shell操作记录转储
概述 主要介绍子shell历史操作记录的保存以及解析,比如python, scala等,用于(准)实时监控用户行为. 背景 一级shell的历史操作记录已由系统实现,当用户从开始登录shell(这里指 ...
随机推荐
- dcoker 小应用(一)
docker 创建Ubuntu系统 1.创建Dockerfile #ubuntu:14.04 image FROM ubuntu:14.04 MAINTAINER XXX, xxx@xxx.com R ...
- Fairseq-快速可扩展的序列建模工具包
一种快速.可扩展的序列建模工具包,Pytorch的高级封装库,适用于机器翻译.语言模型和篇章总结等建模任务. 抽象 Dataset:数据加载 Fairseq中的Dataset基本都是按功能逐层封装,按 ...
- QPS过万,redis大量连接超时怎么解决?
7月2号10点后,刚好某个负责的服务发生大量的redis连接超时的异常(redis.clients.jedis.exceptions.JedisConnectionException),由于本身的数据 ...
- Trapdoors for Hard Lattices and New Cryptographic Constructions
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. Abstract 我们展示了如何构造各种“trapdoor”密码工具,假设标准格问题的最 ...
- 如何快速系统学会使用SPSS?
SPSS是一款数据统计与数据分析工具,操作简单属于数据分析的入门工具. 想要灵活使用SPSS,需要掌握两个方面内容:数据分析相关知识.SPSS操作 1 数据分析 在使用数据分析工具之前,首先要了解数据 ...
- mysql 安装卸载自动化脚本
#!/bin/sh #mkdir /root/mysql #tar -xvf mysql-5.7.-.el7.x86_64.rpm-bundle.tar -C /root/mysql #cd /roo ...
- VuePress初探(一)
原文参考链接 手把手教你使用 VuePress 搭建个人博客 有阅读障碍的同学,可以跳过第一至四节,下载我写好的工具包: git clone https://github.com/zhangyunch ...
- Macos 编译运行调试Mysql源代码
准备编译工具Clion 下载地址 工具是macos用的系统 百度云盘下载地址(密码: 7dus) 下载mysql源码 Mysql源码下载地址 下载boost boost下载地址 前期准备工作 MySQ ...
- tomcat7升级到tomcat8注意事项
第一点:context.xml配置jndi的参数修改 maxActive 替换为 :maxTotal maxWait 替换为 :maxWaitMillis factory="org.ap ...
- 安装与激活PhpStrom
1.下载安装PHPstorm(https://pan.baidu.com/s/1nwK3ew5 密码dhtr) 2.运行 3.下一步选择中间,在http://idea.lanyus.com/ 上获取激 ...