shell简单命令与if语句,从这里开始shell的学习之路

Posted 丁CCCCC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell简单命令与if语句,从这里开始shell的学习之路相关的知识,希望对你有一定的参考价值。

一、条件测试

概述

  • Shell环境根据命令执行($?)后的返回状态值来判断是否执行成功
    • 当返回值为0 (真true) 时表示成功
    • 返回值为非0值(假false)时表示失败或异常

1.1 文件测试

格式

  • [ 操作符 文件或者目录 ]
  • echo $?
    • 查看执行的结果

常用操作符

操作符作用全称
-d测试是否为目录Directory
-e测试目录或文件是否存在Exist
-f测试是否为文件File
-r测试当前用户是否有权限读取Read
-w测试当前用户是否有权限写入Write
-x测试当前用户是否有权限执行EXcute
-l测试是否为符号链接Link

测试

  • -d
    在这里插入图片描述

  • -x
    在这里插入图片描述

1.2 整数值比较

格式

[ 整数1 操作符 整数2 ]

常用操作符

操作符作用全称
-eq等于Equal
-ne不等于Not Equal
-gt大于Greater Than
-lt小于Lesser Than
-le小于等于Lesser or Equal
-ge大于等于Greater or Equal

测试

  • [root@ccc ~]# a=$(who | wc -l)
    • 使用变量名a获得参数
  • [root@ccc ~]# [ $a -gt 5 ] && echo “yes” || echo “no”
    • 主机数是否大于5
  • no
    • 得出结果
      在这里插入图片描述

1.3 字符串比较

格式

格式一

  • [ 字符串1 = 字符串2 ]
  • [ 字符串1 != 字符串2 ]

格式二

  • [ -z 字符串 ]

常用的操作符

操作符作用
=字符串内容相同
!=字符串内容不同,! 表示相反
-z字符串内容为空

测试

在这里插入图片描述

1.4 逻辑测试

格式

格式一

  • [ 表达式1 ] 操作符 [ 表达式2 ]

格式二

  • 命令1 操作符 命令2

常用的操作符

操作符作用
-a或&&逻辑与, “而且” 的意思
-o或 丨丨逻辑或,“或者” 的意思
逻辑否

二、if语句的结构

2.1 单分支结构

在这里插入图片描述

模板

#!/bin/bash				

if [ 10 -gt 5 ]				# 条件测试操作

then						# 条件成立
  echo ok					# 命令序列

fi							# 结束

在这里插入图片描述

2.2 双分支结构

在这里插入图片描述

模板

#!/bin/bash

netstat -natup | grep ":80"				# 搜索80端口
if [ $? -eq 0 ]							# 条件测试操作
then									# 条件成立
  echo "网站服务正常"						# 命令序列

else									# 条件不成立
  echo "启动httpd服务"					# 命令序列
 yum install -y httpd > /dev/null
 systemctl start httpd

fi										# 结束

在这里插入图片描述

2.3 多分支结构

在这里插入图片描述

模板

#!/bin/bash

read -p "请输入你的学号:" score

if [ $score -gt 0 -a $score -lt 100 ]				# 条件测试操作1
 then
  echo "一组"										# 命令序列

elif [ $score -ge 100 -a $score -lt 200 ]			# 条件测试2
 then
  echo "二组"										# 命令序列

elif [ $score -ge 200 -a $score -lt 300 ]			# 条件测试3
 then
  echo "三组"										# 命令序列

else
  echo "学号错误"

fi

在这里插入图片描述

2.4 case多分支结构

在这里插入图片描述

模板

#!/bin/bash

read -p "请输入你的学号:" score
[ $score -gt 0 -a $score -lt 100 ] && a=10
[ $score -ge 100 -a $score -lt 200 ] && a=20
[ $score -ge 200 -a $score -lt 300 ] && a=30

case $a in
10)
echo "一组"
;;

20)
echo "二组"
;;

30)
echo "三组"
;;

*)
echo "不存在的学号!"

esac

在这里插入图片描述

以上是关于shell简单命令与if语句,从这里开始shell的学习之路的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本while用法

shell 参数与逻辑结构语句

shell 编程进阶与自动化脚本expect的运用

shell脚本之条件语句 与 if 语句

shell从入门到精通流程语句

Linux bash/sh/shell编程中的if语句应该怎么写