shell脚本的学习(二)
Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括:
- 算数运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):
#!/bin/sh a=10 b=20 var1=`expr $a + $b` var2=`expr $a - $b` var3=`expr $a \* $b` var4=`expr $a / $b` if [ $a == $b ] then echo "a==b" fi if [ $a != $b ] then echo "a!=b" fi echo "两数之和:"${var1} echo "两数之差"$var2 echo "两数相乘:"$var3 echo "两数取余:"$var4
两点注意:
- 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
- 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。
注意:
- 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
- if...then...fi 是条件语句,后续将会讲解。
- 在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "\" 。
输出结果
关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
关系运算符实例如下:
#!/bin/bash a=10 b=20if [ $a -eq $b ] thenecho "$a -eq $b : a 等于 b" elseecho "$a -eq $b: a 不等于 b" fi
布尔运算符
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
实例
布尔运算符实例如下:
1 #!/bin/bash 2 a=10 3 b=20 4 5 if [ $a != $b ] 6 then 7 echo "$a != $b : a 不等于 b" 8 else 9 echo "$a != $b: a 等于 b" 10 fi 11 if [ $a -lt 100 -a $b -gt 15 ] 12 then 13 echo "$a 小于 100 且 $b 大于 15 : 返回 true" 14 else 15 echo "$a 小于 100 且 $b 大于 15 : 返回 false" 16 fi
逻辑运算符
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
实例
逻辑运算符实例如下:
#!/bin/basha=10 b=20if [[ $a -lt 100 && $b -gt 100 ]] thenecho "返回 true" elseecho "返回 false" fiif [[ $a -lt 100 || $b -gt 100 ]] thenecho "返回 true" elseecho "返回 false" fi
字符串运算符
下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":
实例
字符串运算符实例如下:
#!/bin/basha="abc" b="efg"if [ $a = $b ] thenecho "$a = $b : a 等于 b" elseecho "$a = $b: a 不等于 b" fi if [ $a != $b ] thenecho "$a != $b : a 不等于 b" elseecho "$a != $b: a 等于 b" fi if [ -z $a ] thenecho "-z $a : 字符串长度为 0" elseecho "-z $a : 字符串长度不为 0" fi if [ -n "$a" ] thenecho "-n $a : 字符串长度不为 0" elseecho "-n $a : 字符串长度为 0" fi if [ $a ] thenecho "$a : 字符串不为空" elseecho "$a : 字符串为空" fi
文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下:
实例
变量 file 表示文件"/var/www/runoob/test.sh",它的大小为100字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:
#!/bin/bashfile="/var/www/runoob/test.sh" if [ -r $file ] thenecho "文件可读" elseecho "文件不可读" fi if [ -w $file ] thenecho "文件可写" elseecho "文件不可写" fi if [ -x $file ] thenecho "文件可执行" elseecho "文件不可执行" fi if [ -f $file ] thenecho "文件为普通文件" elseecho "文件为特殊文件" fi if [ -d $file ] thenecho "文件是个目录" elseecho "文件不是个目录" fi if [ -s $file ] thenecho "文件不为空" elseecho "文件为空" fi if [ -e $file ] thenecho "文件存在" elseecho "文件不存在" fi
转载于:https://www.cnblogs.com/xiaotang5051729/p/9300890.html
shell脚本的学习(二)相关推荐
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Linux shell脚本基础学习详细介绍(完整版)
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- 【博学谷学习记录】超强总结,用心分享 | 狂野大数据shell脚本个人学习复习记录—PART-03
shell脚本个人学习&复习记录--PATR-01 shell脚本个人学习&复习记录--PATR-02 Shell的函数 function可以不用写 ()中不能放任何东西#定义函数-- ...
- Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Shell 脚本基础学习 (四)
现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...
- shell脚本应用(二)
防伪码:会当凌绝顶,一览众山小! 第六章 shell脚本应用(二) 前言:为了使shell脚本具有一定的"判断"能力,根据不同的条件来完成不同的管理任务.使脚本具有一定的&quo ...
- Linux shell脚本基础学习详细介绍(完整版)2
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- 详细介绍Linux shell脚本基础学习(一)
2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...
- shell脚本编程学习笔记6(xdl)——字符串截取命令
shell脚本编程学习笔记6--字符串截取命令 1,cut命令 [root@localhost ~]# cut [选项] 文件名-f 列号,表示提取第几列-d 分隔符,按照指定的分隔符分割列注意:默认 ...
最新文章
- python_day10
- 到底什么是生成式对抗网络GAN?
- 什么是分布式_终于搞懂分布式锁是什么了
- 网管员心声:Windows服务有“备”无患
- 在Pivotal Web Service上发布Spring Boot应用
- TiDB 在 Ping++ 金融聚合支付业务中的实践
- 笔记05 局部类型
- prim算法_历时两月,终拿字节跳动offer,算法面试题分享「带答案」
- 洛谷——P1000 超级玛丽游戏
- 正宗PC Unix实验环境
- 070 random模块的使用
- Java中使用正则表达式
- 百度首页制作 (仿百度首页)
- 华为薪酬(2002年左右)
- 帅帅什么意思_帅帅帅是什么意思
- 【脚本小子狂喜】日常实用脚本推荐
- Docker从入门到实战(二)
- Xshell6下载与安装
- 微信小程序--小程序及微信生态圈
- 大众创业热度不减,好机友项目强势来袭
热门文章
- 错误票据java_【蓝桥杯】错误票据 - osc_bskh1wlw的个人空间 - OSCHINA - 中文开源技术交流社区...
- python压缩教程_无需压缩软件,用python帮你操作压缩包
- ssh 无法连接 z/OS 主机
- java spring 登录验证_浅析Spring Security登录验证流程源码
- 百度地图Polyline 清除
- 大数据时代下的信息安全
- VB判断窗体是否加载函数
- VB小技巧 文本框中屏蔽系统右键菜单用自定义菜单代替自带右键菜单
- 32位/64位WIN2003各版本支持内存列表 彻底解决XP系统无法支持4G内存的问题
- DeepMind登上Science:“和AI相比,人类都是猪队友”,团战称霸雷神之锤3