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的更多相关文章

  1. Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)

    I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量                env:环境变量 常用系统变量: path pwd lang home his ...

  2. Shell命令和流程控制

    Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...

  3. shell脚本之流程控制

      shell脚本之流程控制 shell脚本之流程控制 条件语句 条件判断 循环语句for,while,until for循环 while循环 until循环 循环控制语句continue 循环控制语 ...

  4. python基础02—运算符与流程控制

    运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 ...

  5. 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

  6. Lua的五种变量类型、局部变量、全局变量、lua运算符、流程控制if语句_学习笔记02

    Lua的五种变量类型.局部变量.全局变量 .lua运算符 .流程控制if语句 Lua代码的注释方式: --当行注释 --[[    多行注释    ]]-- Lua的5种变量类型: 1.null 表示 ...

  7. python 运算符与流程控制

    运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 ...

  8. 格式化输出的三种方式,运算符及流程控制之if判断

    ''' 格式化输出的三种方式,运算符及流程控制之if判断 ''' # 格式化输出的三种方式 # 一.占位符 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄 ...

  9. Python-基本运算符与流程控制

    目录 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑运算符 身份运算符 位运算符 成员运算符 运算符优先级 流程控制 if 判断 单分支结构 双分支结构 多分支结构 while 循环 while ...

随机推荐

  1. lock(this)

    public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } 网上答案说和参数有关.可是我把int  改成ob ...

  2. 招聘ETL开发工程师

    上班地点徐汇 本科以上学历 3年以上ETL开发经验熟悉Oracle数据库,精通PL  SQL开发与优化,熟悉Vertica或者GreenPlum库优先 熟悉数据库性能优化,有海量数据处理经验优先 自荐 ...

  3. 如何方便的在windows测试python程序

    听说python的网页抓取模块很强大,我想试试看看能给我的网络优化工作带来什么大的帮助,于是跟随廖雪峰老师开始学习python(地址查看),因为我用的是window系统,这就给程序的测试带来了很多麻烦 ...

  4. 第52章:Java操作MongoDB-[Mongo-Java-3.x]

    ①范例:连接数据库 package cn.mldn; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import ...

  5. HDU 6397 Character Encoding (组合数学 + 容斥)

    题意: 析:首先很容易可以看出来使用FFT是能够做的,但是时间上一定会TLE的,可以使用公式化简,最后能够化简到最简单的模式. 其实考虑使用组合数学,如果这个 xi 没有限制,那么就是求 x1 + x ...

  6. vue el-upload form 同时提交

    项目需要form 表单和文件上传同时在一个请求,废话不多说上代码: 上传的组件使用pug格式 .row.my-4 .col-12 el-form(:model='domain', :rules='va ...

  7. linux shell 变量子串

    linx变量子串 在本例子中,变量 test=https://www.//cnblogs./com//jjmaokk/p/10135401.html 1,${#parameter} 返回变量$para ...

  8. Eclipse搭建SSH框架(Struts2+Spring+Hibernate)

    见识少的我经过一天多的研究才知道,在MyEclipse中搭好的框架的配置文件和jar包是通用的.接下来——亮剑! 工具:Eclipse+Tomcat+Mysql 一.先在Eclipse中配置好Tomc ...

  9. vuejs 使用vue-cli引入bootstrap

    前言:对于刚刚进入vuejs的队伍中的小白来讲,很多都是模糊的,js操作dom节点的思想萦绕,还不能自由切换在二者之间. 解决之道: 想要在vue中引入bootstrap,引入的时候需要按照如下的步骤 ...

  10. Exp2 后门原理与实践 20154320 李超

    目录- 基础问题回答- 基础知识- 实验过程- 实验心得体会 基础知识问答 1. 例举你能想到的一个后门进入到你系统中的可能方式?从不安全的网站上下载的程序可能存在后门. 2. 例举你知道的后门如何启 ...