Linux shell脚本算术运算和逻辑运算
算术运算
默认不支持算数运算。所以需要特定的语法来完成,
shell进行算数运算的工具:
- let
- declare
- (())或$(())或$[]
- bc
let:
格式: let var=算术表达式
例如:let num=1+20;echo $num
declare:
例如: declare -i var = 数值
declare -i num=1+5; echo $num
(())或$()或$[]
格式:
- ((var=算术表达式))
- var=$[算术表达式]
- var=$((算术表达式))
- var=$(expr arg1 arg2 arg3 ...)
范例:
((num=999+1));echo $num
echo num=$((999-1))
echo num=$[1+10]
bc:
格式:echo '算术表达式' | bc
例如:echo 999+999 | bc
生成随机数:$RANDOM 取值范围:0-32767
范例:生成0-49之间随机数: echo $[$RANDOM%50]
取余范围: # x % n 取余范围是 0 ~ n-1
例如:对100进行取模得到的值范围在0-99之间。
逻辑运算:与或非、异或
真:$? 为0 或者 二进制1
假:$? 不为0 或者 二进制0
- 与:&
- 或:|
- 非:!
- 异或:^(脱字符) -- 相同为假,不同为真
短路运算
- 短路与 &&:前面为真才会执行后面的
- 短路或 ||:前面为真后面的就不执行了
条件测试命令:
- 格式一:test EXPRESSION
- 格式二:[ EXPRESSION ]
- 格式三:[[ EXPRESSION ]] --- 支持正则表达式和通配符
注意:EXPRESSION前后必须有空白字符
test和中括号等价
test功能:
测试文件的状态、类型、权限
文件权限判断选项:
-r:是否存在读权限
-x:是否存在执行权限
-w:是否存在写权限
文件类型判断:
-f:是否为文本文件
-d:是否为目录文件
文件状态判断:
-e:文件是否存在
-a:文件是否存在
字符串判断:
-z:字符串是否为空
= != > <:连个字符串是否相同、不同等。(这些符号两边要有空格)
使用[[]]的时候:
== 和 !=:使用'=='或'!='的时候,会把右侧的认为是通配符
=~:如果使用的是' =~',会把右侧的认为是正则表达式
双括号采用 == =~
数字之间的比较方法;
-eq: equal,相等
-ne: not-equal,不等
-gt: greater-than,大于
-lt:less-than,小于
关于 () 和 {}
作用:将多个命令组合在一起,批量执行
格式:( 空格 CMD1;CMD2;...)和 {空格 CMD1;CMD2;...; }(括号左边要有空格)
使用小括号(),里面执行的命令会开启子进程,大括号不会。
组合条件测试:
把两个条件用并且、或者的关系联系起来
并且: -a表示并且 --- EXPR1 -a EXPR2
例如:如果当前用户非root且该文件不存在就创建这个文件
[ $(whoami) != 'root' -a ! -e /data/dir ] && sudo mkdir /data/dir
或者: -o表示或者 --- EXPR1 -o EXPR2
read:用来接受键盘输入
read读取到键盘的输入以后,会把值分配给指定的一个变量。如果没有指定变量,就把值赋值给内置的变量REPLY。
选项:
-p 指定提示信息
Linux shell脚本算术运算和逻辑运算的更多相关文章
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- 阿里Linux Shell脚本面试25个经典问答
转载: 阿里Linux Shell脚本面试25个经典问答 Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命 ...
- Linux Shell脚本教程
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux Shell 脚本入门
linux shell 脚本格式 #!/bin/sh#..... (注释)命令...命令... 使用vi 创建完成之后需设置权限 chmod +x filename.sh 执行命令: ./filena ...
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
随机推荐
- Codeforces Round #705 (Div. 2) B. Planet Lapituletti(镜像时钟) 思维
传送门: https://codeforces.com/contest/1493/problem/B 题目: Example input 5 24 60 12:21 24 60 23:59 90 8 ...
- MySQL免安装版发生系统错误 1067
使用MySql免安装版启动时1067 解决办法 打开安装的文件夹 找到my.ini的mysqld模块,调整参数位置. 3. 重新启动Mysql服务 net start mysql
- jmeter工具初探
jmeter工具初探 一.jmeter工具介绍 1.一种免费的java开源工具,可以进行二次开发 2.运行环境:java运行环境,需要安装JDK,配置JAVAHOME 环境变量 3.下载jmeter: ...
- 快速了解Spring,简明Spring使用流程
前言: 注意题目,这篇文章说的是操作,也就是重在应用,更多的是一个入门的或者说一篇概览,所以大佬们多多担待,不涉及底层分析和很多的源码,所以如果看官想看以上两者的可以划走了,有时间又不懒的话,可能以后 ...
- IDEA新建项目时的默认配置与模版配置
今天一大早,群里(点击加群)有小伙伴问了这样的一个问题: 在我们使用IDEA开发项目的时候,通常都会有很多配置项需要去设置,比如对于Java项目来说,一般就包含:JDK配置.Maven配置等.那么如果 ...
- [没接触过kubevirt?]15分钟快速入门kubevirt
@ 目录 本文介绍 前言 环境准备 详细版 搭建步骤 安装KubeVirt 安装virtctl客户端工具 创建VirtualMachine 启动VirtualMachineInstance 启动和停止 ...
- jQuery.extend()[$.extend()]
jQuery.extend(target, object1[,objectN]);jQuery.extend([deep], target, object1[,objectN]);jQuery.ext ...
- Docker的基本原理及使用
Docker 安装 https://docs.docker.com/engine/install/ubuntu/ 应用场景 Web 应用的自动化打包和发布. 自动化测试和持续集成.发布. 在服务型环境 ...
- DDoS攻击--TCP攻击概述
https://blog.csdn.net/qq_34777600/article/details/81945594
- 好客租房48-组件的props(基本使用)
组件是封闭的 要接受外部数据应该通过props来实现 props的作用:接受传递给组件的数据 传递数据:给组件标签添加属性 接收数据:函数组件通过参数props接收数据 类组件通过this.props ...