条件测试

当需要对执行的某一条命令执行的结果状态进行判断的时候,需要进行条件测试。
使用test 条件表达式 或者 [ 条件表达式 ]
两层方括号表示模式匹配,可以用通配符
示例:[[ aa.sh == *.sh ]] && echo y || echo n
文件测试
对文件测试意思是,根据给的文件的路径(绝对路径或相对路径),判断对应的是文件还是目录,或者是文件或目录的读写执行权限。
-d 表示测试是否是目录(Directory)
-f 表示测试是否为文件(file)
-e 表示测试目录或文件是否存在(exist)
-r 表示测试当前用户是否有权限读(read)
-w 表示测试当前用户是否有权写入(write)
-x 表示测试是否可执行(execute)
整数值比较
-eq :等于
-ne :不等于
-gt :大于
-lt :小于
ge :大于等于
le :小于等于
字符串比较
= :字符串1与字符串2相同
!= :字符串1与字符串2不相同
-z :检查字符串是否为空,对于未定义或赋予空值的变量将视为空串。
-n :检查字符串是否非空,变量赋予值为非空。
逻辑测试
&& :逻辑与,表示“并且”,当前后两个测试语句都成立时,整个测试命令的返回值为0。可以用 -a
示例 [ 测试语句1 -a 测试语句2 ] 也可以用 [ 测试语句1 ] && [ 测试语句2 ]
|| :逻辑或,表示“或者”,前后两个测试语句只需要满足一个成立,返回值为0。
示例 [ 测试语句1 -o 测试语句2 ] 也可以用 [ 测试语句1 ] || [ 测试语句2 ]
! :逻辑非,表示“不”,当测试语句不成立时,返回值为0。

if语句

if语句的结构

1、单分支if

语法格式如下:
if 测试语句
then
命令序列
fi

2、双分支if

语法格式如下:
if 测试语句
then
命令序列1
else
命令序列2
fi

3、多分支if

语法格式如下
if 测试语句1
then
命令序列1
elif 测试语句2
then
命令序列2
.
. //省略部分elif
.
else
命令序列n…
fi

if分支的简单应用

[root@localhost ~]# vim hashome.sh #!/bin/bash
#判断用户有无家目录的脚本
#作者:lvbinread -p "请输入用户名:" name
cat /etc/passwd | grep ^$name
if [ $? -eq 0 ];thenif [ $name == root ];thenecho "该用户是管理员用户,家目录是$HOME"elsels /home | grep $nameif [ $? -eq 0 ];thenecho "该$name用户家目录是/home/$name"fifi
elseecho "没有此用户"
fi

case 分支

case分支介绍

case分支适用于当某个变量存在多种取值,需要对其中的每一种取值执行不同的命令序列。
case语法结构如下:
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;

*)
默认命令序列
esac

case语句的执行流程

首先使用变量值与模式1比较,若比较值相同,则执行模式1下面的命令序列1,直到遇见 “ ;; ” 后跳转到esac,表示分支结束。若与模式1不匹配,则往下匹配模式2,如相同,则执行模式2的命令序列2,直到遇见 “ ;; ” 后跳转到esac,表示分支结束,依次类推,如果都不匹配,则执行默认的 *)下面的默认命令序列。

注意事项:
1、case行尾必须为单词 in,每一个模式必须以右括号 “ ) ”结尾。
2、双分号“ ;; ”表示命令序列结束。
3、模式字符串种,可以用方括号表示一个连续的方位,例如“[0-9]”,还可以用竖杠 “|”表示或,例如“a|b”。
4、最后的 )表示默认模式,其中相当于通配符。

case的简单应用

[root@localhost ~]# vim caiquan.sh

#!/bin/bash
#猜拳小游戏
#作者:lvbin
echo "人机猜拳小游戏"
read -p "请输入剪刀、石头或布:" chose
#随机数模3取余,0代表剪刀、1代表石头、2代表布
computer=$[RANDOM%3]
case $chose in
"剪刀")if [ $computer -eq 0 ];thenecho "电脑出剪刀,平局"elif [ $computer -eq 1 ];thenecho "电脑出石头,你输了"elseecho "电脑出布,你赢了"fi
;;
"石头")if [ $computer -eq 0 ];thenecho "电脑出剪刀,你赢了"elif [ $computer -eq 1 ];thenecho "电脑出石头,平局"elseecho "电脑出布,你输了" fi
;;
"布")if [ $computer -eq 0 ];thenecho "电脑出剪刀,你输了"elif [ $computer -eq 1 ];thenecho "电脑出石头,你赢了"elseecho "电脑出布,平局"fi
;;
esac

Shell脚本 条件相关推荐

  1. linux中利用shell脚本条件执行linux命令

    linux中利用shell脚本条件执行命令 在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们 ...

  2. Shell脚本——条件语句

    shell脚本--编程条件语句(条件测试.if语句.case分支语句) 一.条件测试 1.1 Test命令 1.2 文件测试 1.3整数值比较 1.4字符串比较 1.5逻辑测试 二.if语句 2.1 ...

  3. shell脚本条件测试、正整数字符串比较与if、case语句

    目录 条件测试 三种测试方法 选项 比较整数数值 字符串比较 脚本中常用命令 echo命令 date命令 cal命令 tr命令 cut命令 sort命令 uniq命令 cat多行重定向 if语句 分支 ...

  4. BASH SHELL 脚本基础

    什么是shell     Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序, ...

  5. Makefile和shell脚本调用上的一些总结

    大家都知道在Makefile可以调用shell脚本,但是Makefile和shell脚本是不同的.本文试着介绍一下Makefile和shell脚本的不同. 1.在Makefile中只能在target中 ...

  6. bigdecimal判断等于0_Linux | shell脚本-比较判断和运算语句

    一.简介 在我们写shell脚本的过程中,经常需要作比较判断,例如比较哪个数字大,判断文件是否存在,判断文件是否是目录,判断是否为真等操作.有时候我们还需要做运行,例如加减乘除等等,今天就来简单介绍比 ...

  7. 【 Kotlin 脚本编程Kotlin Scripting 】Linux Shell 脚本与Kotlin Scripting

    Linux 英文解释为 Linux is not Unix. Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 是一 ...

  8. ubuntu及shell脚本常用命令入门

    一.Shell命令 二.ubuntu软件安装方法 三.Ubuntu文件系统结构 四.ubuntu磁盘文件 五.Linux下常用的压缩格式 六.linux用户和用户组 七.Ubuntu/Linux文件权 ...

  9. Linux shell脚本各种烧脑题编写

    第一列达到100的时候 第二列数字从100向1 处理 第二列数字到50 第三列数字从100递增 第二列数字为0时不显示 第四列数字从1递增 ============================== ...

  10. Linux嵌入式开发——shell脚本

    文章目录 Linux嵌入式开发--shell脚本 一.shell脚本基本原则 二.shell脚本语法 2.1.编写shell脚本 2.2.交互式shell脚本 2.3.shell脚本的数值计算 2.4 ...

最新文章

  1. Android ActionBar相关
  2. 前端token刷新并发处理
  3. SAP MM 外部采购流程里的Advanced Return Management
  4. pyhton列表习题
  5. hdu4717 三分(散点的移动)
  6. 【深度学习】神经网络模型特征重要性可以查看了!!!
  7. 面试题08(C++)
  8. html5伸缩效果,【HTML5】Jquery打造竖向伸缩/展开菜单
  9. hdu 2544 最短路
  10. 北师大计算机试题五答案,北京师范大学计算机软件及理论2022考研招生分析、参考书、真题等复习指导解析...
  11. 最后解密的两弹元勋,众帅之帅朱光亚
  12. 黑盒测试--等价类划分、边界值分析
  13. 【BZOJ1597】【Tyvj2461】土地购买,第一次的斜率优化DP
  14. ssis for循环容器_SSIS包中的序列容器
  15. HDU 6274 Master of Sequence (暴力+下整除)
  16. B - Vicious Keyboard
  17. 2017初赛普及c语言答案,NOIP2017初赛普及组C++试题
  18. 保姆级教程,手把手教你制作数据分析报告
  19. 字节跳动前端外包面试题
  20. 中国最美的经典古文名篇Top10,它们也是你心中的白月光吗?

热门文章

  1. 一大批历史精彩文章啦
  2. 深度学习2.0-13.神经网络与全连接层之张量实战
  3. pytorch 中nn.MaxPool1d() 和nn.MaxPool2d()对比;nn.functional.max_pool1d
  4. pytorch--nn模块(2)optim
  5. 书单|互联网企业面试案头书之程序员技术篇
  6. 揭秘React同构应用
  7. 《我也能做CTO之程序员职业规划》之七:大学生职业规划技巧
  8. 优化理论07-----拟牛顿法、拟牛顿方程、对称秩二更新公式、BFGS、DFS、Broyden族、Huang’s Family
  9. php phonegap,PHP数据是无休止的加载,jquery,phonegap
  10. r语言kendall协和系数_多变量Kendall协和系数检验.ppt