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 指定提示信息
最新文章
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
- ADO.NET封装的SqlHelper
- SpringMVC 使用Form标签库制作登录表单
- SRM 358(1-250,500pt)
- 【CF】220B Little Elephant and Array
- 使用Iterator遍历Sheet(POI)验证及解释结果有序性
- HDU1698_Just a Hook(线段树/成段更新)
- Python内置函数(18)——bin
- python语法_模块_loggin_hashlib_conifgparser
- 极路由hc5661安装tcpdump
- [luogu1829][bzoj2154][国家集训队]Crash的数字表格 / JZPTAB【莫比乌斯反演】
- soapUI学习文档(转载)
- IOS 开发体验测试问题
- 【其他】【navicat】【1】navicat导入txt文件中文乱码问题解决
- word2013密钥
- mysql攻防之写入漏洞
- 第九章 词典 (d2)散列:排解冲突(2)
- scrapy(一)scrapy 安装问题
- 前馈神经网络练习:使用tensorflow进行葡萄酒种类识别
- [Unity Editor]10行代码搞定Hierarchy排序
热门文章
- 那些年uniapp踩过的坑之-------搜索框插件uni-search-bar字体和图标居中的问题
- OA办公软件篇(二)—权限管理
- HMS Core Discovery第14期直播预告~纵享丝滑剪辑,释放视频创作力
- 玩转LiteOS组件:玩转Librws
- 关于 background-image 渐变gradient()那些事!
- Bugku CTF练习题---MISC---贝斯手
- XCTF练习题---WEB---simple_js
- Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作
- 神器 Nginx 的学习手册 ( 建议收藏 )
- sqlx操作MySQL实战及其ORM原理