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

 

最新文章

  1. 利用jQueryRotate旋转插件开发大转盘抽奖
  2. Apache commons-codec笔记
  3. EntityFramework_MVC4中EF5 新手入门教程之四 ---4.在EF中创建更复杂的数据模型
  4. Flex坐标
  5. location跳转和header跳转的区别
  6. 不使用CvvImage类来在MFC中显示图像
  7. 【KMP】【最小表示法】NCPC 2014 H clock pictures
  8. 查看TOMCAT内存使用情况 以及修改方法
  9. 告别findViewById(),ButterKnife,使用Google Data Binding Library(1)
  10. SNS团队Beta阶段第五次站立会议(2017.5.26)
  11. Kudu存储实战笔记
  12. iOS 快捷下载和安装并使用CocoaPods
  13. Fiddler修改图片显示
  14. 以太坊remix-ide本地环境搭建
  15. 删去k个数字后的最小值
  16. TZOJ 2560 Geometric Shapes(判断多边形是否相交)
  17. CPU简单科普
  18. docker 构建带健康检查的redis镜像
  19. 关于thymeleaf+layout布局的使用方式,spring boot 访问页面(静态页面及jsp页面)
  20. ubuntu环境下添加中文输入法

热门文章

  1. 谷歌浏览器运行Flash
  2. javascript之原型链
  3. 01 C语言程序设计--01 C语言基础--第3章 基本数据类型01
  4. select下拉框左右变换
  5. UTF-8的BOM含义
  6. Jquery.Datatable 控件后端分页实例 (后台使用ashx、aspx-webmethod)
  7. MyBatis generator配置 overwrite 文件覆盖失效
  8. shell awk处理过滤100万条数据
  9. ES6 generators in depth 一(译)
  10. Runtime &quot;Apache Tomcat v6.0 (3)&quot; is invalid. The JRE could not be found. Edit the server and change the JRE location解决方案