shell运算符与流程控制-2
1、shell运算符
1.1、算数运算符
原生的bash不支持算数运算,可以通过其它方式实现例如expr。
`expr a + b`
#a b为数字,和运算符之间要有空格
#``不是单引号,为键盘上ESC键下方的反引号
示例如下:
#!/bin/sh a=
b=
#加法
val=`expr ${a} + ${b}`
echo " ${a} + ${b} is :${val}" #减法
val=`expr ${a} - ${b}`
echo " ${a} - ${b} is :${val}" #乘法
val=`expr ${a} \* ${b}`
echo " ${a} * ${b} is :${val}" #除法
val=`expr ${a} / ${b}`
echo " ${a} / ${b} is :${val}" #取余
val=`expr ${a} % ${b}`
echo " ${a} % ${b} is :${val}"
输出:
+ is :
- is :
* is :
/ is :
% is :
1.2、关系运算符
关系运算符只支持数字,常见的关系运算符如下:
c=
d=
#等于
if [ ${c} -eq ${d} ]
then
echo "${c} is equal to ${d}"
fi
#不等于
d=
if [ ${c} -gt ${d} ]
then
echo "${c} is great than ${d}"
fi
# -eq 等于,[ ${c} -ne ${d} ]返回True
# -gt 检测左边数是否大于右边,如果是,则返回True,反之,返回False
# -lt 检测左边数是否小于右边,如果是,则返回True,反之,返回False
# -ge 检测左边数是否大于等于右边,如果是,则返回True,反之,返回False
# -le 检测左边数是否小于等于右边,如果是,则返回True,反之,返回False
输出如下:
is equal to
is great than
1.3、布尔运算符
#非运算!,表达式为True,则返回False
#与运算-o,有一个表达式为True则返回True
#或运算-a,两个表达式为True则返回True
c=
d=
e=
if [ ${c} -ne ${d} -o ${d} -eq ${e} ]
then
echo "${c} 不等于 ${d} 或者 ${d} 等于 ${e} ,返回True。"
fi
输出如下:
不等于 或者 等于 ,返回True。
1.4、逻辑运算符
#&& 逻辑and
#|| 逻辑or
c=
d=
e=
if [ ${c} -ne ${d} and ${d} -eq ${e} ]
then
echo "${c} 不等于 ${d} 并且 ${d} 等于 ${e} ,返回True。"
else
echo "${c} 不等于 ${d} 或者 ${d} 等于 ${e} ,返回True。"
fi
不等于 或者 等于 ,返回True。
1.5、字符串运算符
# =,检测两个字符串是否相等,相等则返回True
# !=,检测两个字符串是否不等,不等则返回True
# -z,检测字符串是否为零,为零返回True
# -n,检测字符串是否不为零,为零返回False
# $ ,检测字符串是否为空,不为空返回True
示例如下:
a="Hello"
b="Hello"
if [ ${a} = ${b} ]
then
echo "str ${a} is equal to ${b}"
fi if [ -n ${a} ]
then
echo "str ${a} is not zero. "
输出如下:
str Hello is equal to Hello
str Hello is not zero.
1.6、文件检测运算符
#-w ${file} 检测文件是否可写,可写则返回True
#-r ${file} 检测文件是否可读,可写则返回True
#-x ${file} 检测文件是否可执行,可执行则返回True
#-s ${file} 检测文件是否为空,不为空则返回True
#-e ${file} 检测文件或目录是否存在,存在则返回True
#文件检测运算符比较多,此时不一一列举
curr_path=`pwd`
if [ -e ${curr_path} ]
then
echo "dir ${curr_path} is exist."
fi
输出如下:
dir /home/stephen/桌面 is exist.
2、shell流程控制
2.1、if
#!/bin/bash
#假如 条件1成立,则执行语句1
#假如 条件1不成立,条件2成立,则执行语句2
#假如 条件1,2不成立,则执行语句3 if 条件1
then
语句1
elif 条件2
then
语句2
else
语句3
示例如下:
age=
if [ ${age} -lt ]
then
echo "age is ${age}, yonng"
elif [ ${age} ]
then
echo "age is ${age},midlife"
else
echo "age is ${age},old"
fi
输出如下:
age is , yonng
2.2、for循环
data_path=(data1 data2 data3)
for datai in ${data_path[@]}
do
echo ${datai}
done
输出:
data1
data2
data3
for ((i=;i<;i++))
do
echo ${i}
done
输出:
2.3、while
#当条件1成立,循环执行语句1
while 条件1
do
语句1
done
示例如下:
i=
while [ ${i} -lt ]
do
echo "loop ${i}"
#语法 let "表达式"
let i++
done
输出如下:
loop
loop
loop
2.4、until
#当条件1不成立时,就执行语句1
until 条件1
do
语句1
done
示例如下:
j=
until [ ${j} -lt ]
do
echo "loop ${j}"
let j--
done
输出如下:
loop
loop
loop
loop
shell运算符与流程控制-2的更多相关文章
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- Shell命令和流程控制
Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...
- shell脚本之流程控制
shell脚本之流程控制 shell脚本之流程控制 条件语句 条件判断 循环语句for,while,until for循环 while循环 until循环 循环控制语句continue 循环控制语 ...
- python基础02—运算符与流程控制
运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- Lua的五种变量类型、局部变量、全局变量、lua运算符、流程控制if语句_学习笔记02
Lua的五种变量类型.局部变量.全局变量 .lua运算符 .流程控制if语句 Lua代码的注释方式: --当行注释 --[[ 多行注释 ]]-- Lua的5种变量类型: 1.null 表示 ...
- python 运算符与流程控制
运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 ...
- 格式化输出的三种方式,运算符及流程控制之if判断
''' 格式化输出的三种方式,运算符及流程控制之if判断 ''' # 格式化输出的三种方式 # 一.占位符 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄 ...
- Python-基本运算符与流程控制
目录 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑运算符 身份运算符 位运算符 成员运算符 运算符优先级 流程控制 if 判断 单分支结构 双分支结构 多分支结构 while 循环 while ...
随机推荐
- 在centos7上配置jenkins
在Linux(centos7)环境下配置jenkins,并用github作为仓库. 配置jenkins https://blog.csdn.net/wangfei0904306/article/det ...
- 解决在静态页面上使用动态参数,造成spider多次和重复抓取的问题
我们在使用百度统计中的SEO建议检查网站时,总是发现“静态页参数”一项被扣了18分,扣分原因是“在静态页面上使用动态参数,会造成spider多次和重复抓取”.一般来说静态页面上使用少量的动态参数的话并 ...
- vi中删除所有查找到的行
vi中删除所有查找到的行 在linux中查找文件,结果中有很多是.svn目录里的,把查找结果放到一个文件里. 用vi打开该文件,按ESC,进入命令行模式,输入 :g/\.svn/d 就可以把所有含”. ...
- ABAP 常见系统表
TRDIRT Program nameTFTIT Function module nameDD02T Table name
- 初学者必看的文章:在VM12中安装 RedHat RHEL7.2 系统的详细步骤:看我如何操纵RHEL系统
一.开始安装 1)新建虚拟机 RHEL7.2 2)成功引导系统--开机出现此画面 Install Red Hat EnterpriseLinux 7.2 安装RHLE7.2 操作系统 Test th ...
- js之Ajax下载文件
传统上,客户端将依靠浏览器来处理从服务器下载文件.然而,这种方法需要打开一个新的浏览器窗口,iframe或任何其他类型的不友好和黑客行为.为下载请求添加额外的头信息也很困难.更好的解决方案是使用HTM ...
- ora 01795 in 1000 limit
https://docs.oracle.com/cd/B19306_01/server.102/b14200/conditions013.htm https://docs.oracle.com/cd/ ...
- 如果解决小程序1024kb渲染之坑
问题: 在小程序开发中如果有那么个场景和操作步骤,获取商品下拉列表商品列表data为goodsList 当从后台获取数据response.data.list,通常我们会setData({goodsLi ...
- IDEA打开maven项目dependencies红线
第一步:install报红的项目,从maven库下载需要的包,看看日志还缺哪些本地包,少了就去下,丢到库里.不缺包后,reimport一下一般就OK了,如果还是红的,重启一下就好了. 如果第一步还没好 ...
- UML顺序图知识点介绍(Sequence Diagram)
消息 调用消息 调用(procedure call)消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息接受者放弃会返回控制 在Rational Rose(2016版本如图所示) 异步消息 异 ...