继续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脚本学习 - 运算符的更多相关文章

  1. 02- Shell脚本学习--运算符

    Shell运算符 Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 算术运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 aw ...

  2. Shell脚本学习指南笔记

    Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...

  3. 笔记——shell脚本学习指南

    <shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...

  4. Shell 脚本学习资料搜集

    Shell文档 ChinaUnix上大神“網中人”总结的Shell十三问,强烈推荐,这本书讲得比较精炼,而且都是一些Shell学习中容易把握不住的一些细节难点.每一问都写得非常精彩.ChinaUnix ...

  5. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  6. 转 shell脚本学习指南

    shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...

  7. shell脚本学习总结02--数组

    bash同时支持普通数组个关联数组,普通数组只能使用整数作为数组的索引,关联数组可以使用字符串作为数组的索引. 数组的定义方法: 在单行中使用一列值定义一个数组 [root@new ~]# array ...

  8. shell脚本学习之6小时搞定(1)

    shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...

  9. shell脚本学习总结(不断更新中)

    前言:自从大学毕业参加工作以来,接触的开发工作都是在服务端完成,于是接触了比较多的Linux当做开发机使用,或多或少有一些重复性的工作,于是开始琢磨学习一些shell脚本的知识,以便处理这些繁琐的事情 ...

随机推荐

  1. js分享功能(微信,QQ,微博,空间,豆瓣等)

    日常编程中,我们可能会碰到项目中的分享功能,各大平台都有分享接口和文档说明,当然也有一些一键分享插件,例如:sosh,iShare.js等等 但有些同学不想引用插件,那么我整理了一些常用的分享至平台功 ...

  2. HttpUtility.UrlEncode()关于空格的编码问题

    因为 HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号"+", 在 Decode 的时候将"+"号转为空格, 但是浏览器 ...

  3. 【转】Java 通过JDBC连接Mysql数据库的方法和实例【图文说明】

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  4. MyBatis入门2

    一.实现单一查询 1)核心配置文件:Configuration.xml 1 <?xml version="1.0" encoding="UTF-8"?&g ...

  5. jQuery新版本没有了Toggle事件,两个按钮分别控制隐藏显示,同时这两个按钮点击也要互斥。

    十二月没来得及整理发布,一直在草稿箱.现在已经2019年1月了... 需求大概是这样的 //XX点击事件 var flagBar = 0; $("#doNotBaseRate"). ...

  6. windows 2012 如何设置取消禁拼ping

    直接上操作方法: 开始——搜索——高级安全windows防火墙——入站规则找到“文件和打印机共享(回显请求-ICMPv4-in)”右击……选择“启用规则”就OK了! 如果用到IPV6.后面也有 “文件 ...

  7. js原型链+继承 浅析

    名称:    prototype--原型对象    __proto__--属性 原型链与继承网上搜索定义,看起来挺绕的 .先说继承: 所有的对象实例都可以共享原型对象包含的属性和方法  例如一个实例A ...

  8. 跨域资源共享(CORS)

    同源策略 同源策略是浏览器的一个安全策略,只允许当前页面或当前域下发送请求,如果向其他域发送请求,会被浏览器拦截 同源的意思:协议.IP地址.端口三者一致,浏览器才会认为是同一个域,三者中有一个不一致 ...

  9. axios 拦截器统一在接口增加时间戳参数,防止走缓存。

    request.interceptors.request.use( config => { if (config.method == 'post') { config.data = { ...c ...

  10. 宏定义define和const的区别

    define和const都可以用来定义常量,define的格式为:#define 标识符 字符串,const在定义常量前面,const类型定以后不能被修改,区别主要有如下几点: 1.编译器处理方式不同 ...