Shell脚本学习 - 运算符
继续shell脚本学习。上一篇是基本数据类型和语法的总结,这一篇是运算相关的操作。
运算符
bash不支持简单的数学计算,需要依赖其他命令实现。
expr可以代为实现。
# 表达式一般这么写
`expr + `
注意点:
1. 引号不是普通单引号,是右斜的引号,在esc键下方。表达式用这种右斜的引号括起来,必须成对出现
2. 运算符两边要留空格。4+4不行,必须写成4 + 4
运算符不用多说,和其余编程语言类似。加减乘除取余:+-*/%
赋值用=,比较相等用==,比较不等用!=
特别注意的是*要在前面加反斜杠,写成\*
还有就是看到教程中有特别指出的一点:
在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "\"
关系运算符
关系运算符只支持数字,或者值为纯数字的字符串
相等:-eq
不等:-ne
大于:-gt
小于:-lt
大于等于:-ge
小于等于:-le
布尔运算符
非:!
或:-o
与:-a
逻辑运算符
逻辑与:&&
逻辑或:||
字符串运算符
比较两个字符串是否相等:=
比较不等:!=
判断字符串长度是否为0:-z [-z $a]
判断字符串长度是否非0:-n [-n "&a"]
判断字符串是否为空:[$a]
文件测试运算符
用于检测Unix文件的各种属性
-b file:是否为块设备文件
-c file:是否为字符设备文件
-d file:是否为目录
-f file:是否是普通文件
-g file:是否设置了SGID位
SGID的解释:
SGID是获得该程序所属用户组的权限。SGID主要用在目录上
-k file:是否设置了粘着位(Sticky Bit)
SBIT的解释:
若没有粘滞位,则普通用户可以对目录下的文件/子目录进行删除操作(因为普通用户对目录具有w权限),包括其它用户建立的目录/文件;但若赋了SBIT,则普通用户只能删除自己创建的文件/目录,而不能删除不属于自己的文件/目录!
-p file:是否为有名管道
-u file:是否设置了SUID位
SUID的解释:
让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源
-r file:是否可读
-w file:是否可写
-x file:是否可执行
-s file:是否文件为空
-e file:文件或目录是否存在
Shell脚本学习 - 运算符的更多相关文章
- 02- Shell脚本学习--运算符
Shell运算符 Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 算术运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 aw ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- 笔记——shell脚本学习指南
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...
- Shell 脚本学习资料搜集
Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- 转 shell脚本学习指南
shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...
- shell脚本学习总结02--数组
bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...
- shell脚本学习之6小时搞定(1)
shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...
- shell脚本学习总结(不断更新中)
前言:自从大学毕业参加工作以来,接触的开发工作都是在服务端完成,于是接触了比较多的Linux当做开发机使用,或多或少有一些重复性的工作,于是开始琢磨学习一些shell脚本的知识,以便处理这些繁琐的事情 ...
随机推荐
- DirectX11 With Windows SDK--25 法线贴图
前言 在很早之前的纹理映射中,纹理存放的元素是像素的颜色,通过纹理坐标映射到目标像素以获取其颜色.但是我们的法向量依然只是定义在顶点上,对于三角形面内一点的法向量,也只是通过比较简单的插值法计算出相应 ...
- 076、创建Rex-Ray volume (2019-04-23 周二)
参考https://www.cnblogs.com/CloudMan6/p/7624556.html 前面我们安装部署了 Rex-Ray ,并且成功配置 Virtualbox backend ,今 ...
- 电梯系列——OO Unit2分析和总结
一.摘要 本文是BUAA OO课程Unit2在课程讲授.三次作业完成.自测和互测时发现的问题,以及倾听别人的思路分享所引起个人的一些思考的总结性博客.主要包含设计策略.代码度量.BUG测试和心得体会等 ...
- [Reinforcement Learning] Value Function Approximation
为什么需要值函数近似? 之前我们提到过各种计算值函数的方法,比如对于 MDP 已知的问题可以使用 Bellman 期望方程求得值函数:对于 MDP 未知的情况,可以通过 MC 以及 TD 方法来获得值 ...
- idea中pom.xml添加了新的maven依赖,点击import changes没反应
打开file,setting. 选择Build,Execution,Deployment -> Build Tools -> Maven. 修改maven home directory为自 ...
- luogu P5324 [BJOI2019]删数
传送门 不如先考虑暴力,能删的序列首先有\(1,2,3...n\),还有就是升序排序后从后往前放数,第\(i\)位要么放\(i\),要么放\(i+1\)位置的数,例如\(1,2,4,4,5,6,9,9 ...
- Ubuntu下 MySql忘记密码解决方案
1.在终端输入 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 2.在文件内搜索skip-external-locking,在下面添加一行: skip-gran ...
- 20165337《网络对抗技术》week1 Exp0 Kali安装
1.下载kali kali官网:https://www.kali.org 在官网中下载,并且在VMvare里打开 2.修改视图 进去之后虚拟机界面很小,需要修改视图来调整 3.网络设置 4.文件夹共享 ...
- put your hands up PHPLFI +CVE
当时做了''一年'',都没做出来,hint了一个PHPLFI,我就懵了,任意文件上传怎么和PHPLFI结合呢,还是要看的多,做的多,才有那种感觉. 习惯性查看源码 CVE-2017-12615,PUT ...
- 阻塞IO,非阻塞IO,IO多路复用模型
#服务端 import socket sk = socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen() while True: conn, ad ...