3天玩转shell--2.流程控制之if-else

简介: 本文将通过shell代码示例,简单通俗的讲解shell。通过执行代码和运行结果反向掌握shell编程方法。准备一台低配的阿里云ECS Linux环境,跟着教程走起,本文比较适合shell小白。

一、这节课掌握如下几个知识点

【1】掌握if判断的写法
【2】掌握判断常用的参数
-f :判断存在文件返回true
-s :判断存在文件且不为0字节返回true
-d :判断存在目录返回true
-x :判断文件是可执行文件返回true
-z :判断变量为空返回true
-n :判断变量不为空返回true
-gt :大于
-ge :大于等于
! :非
!= :不等于
== :等于
&& :and
|| : 或

二、通过代码讲解

#!/bin/bash
#2.sh v1
#create by maoge
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
export LANG=zh_CN.UTF-8
export PATH

#【1】if的三种写法
#1.1直接进行整数判断
a=3
b=2
if [ $a > $b ];then
   echo "1 yes"
fi
#1.2 效果同1.1
if (( $a>$b ));then
   echo "2 true"
fi

#1.3判断命令执行的结果是否为真
echo "one" >/tmp/test.txt
if cat /tmp/test.txt|grep "one"
  then
   echo "3 yes"
fi

#1.4 支持正则匹配某个字符是否包含
cc="linux"
if [[ "$cc" == lin* ]];then
   echo "4 yes"
fi

#1.5 判断变量是否等于某个字符串
vv="shell"
if [ "$vv" == "linux" ];then
    echo "5 if" 
elif [ "$vv" == "shell" ];then
    echo "5 elif"
else
    echo "5 else"
fi

#【2】.掌握if判断的常用参数
#2.1判断文件是否存在
if [ -f /tmp/1.txt ];then
   echo "存在 /tmp/1.txt"
else
   touch /tmp/1.txt
fi

#2.2判断文件是否为空
if [ -s /tmp/1.txt ];then
   echo "/tmp/1.txt 文件为空"
else
   echo "test" >/tmp/1.txt
fi

#2.3判断文件是否有执行权限
if [ -x /tmp/1.txt ];then
   echo "有执行权限"
else
   echo "没有执行权限"
fi


#2.4判断是否存在某个目录
if [ -d /tmp/testdir ];then
    echo "存在目录/tmp/test"
else
    mkdir -p /tmp/testdir
fi
#2.4的写法还可以这样写
[[ -d /tmp/testdir ]] || mkdir -p /tmp/testdir

#2.5判断变量是否不为空
ee="shell"
if [ -n "$ee" ];then
   echo "ee 不为空变量"
else
   echo "ee 是空变量"
fi

#2.6判断变量是否为空
xx=""
if [ -z "$xx" ];then
   echo "xx 是空变量"
else
   echo "xx 不是空变量"
fi

#2.7整数大小判断
# -gt -ge -lt -le -eq
echo "230" >/tmp/1.txt
aa=$(cat /tmp/1.txt)
if [ $aa -gt 105 ];then  #大于
   echo "aa dayu 105"
fi
if [ $aa -eq 230 ];then  #等于
   echo "aa dengyu 230"
fi
if [ $aa -lt 280 ];then  #小余
   echo "aa xiaoyu 280"
fi

#2.8 非 and or的判断方法
if [ ! -d /tmp/one ];then #判断不存在某个目录
   echo "不存在/tmpone目录"
   mkdir -p /tmp/one
fi
#10#$aa表示以10进制的形式判断大于120,或者$num小余56
num=$(cat /tmp/1.txt)
if [[ 10#$aa -gt 120 ]] || [[ 10#$num -lt 56 ]];then 
   echo "$aa 大于120 或者 $num 小于 56" 
fi
#表示$zz不为空并且不等于"no"
if [[ -n "$zz" ]] && [[ "$zz" != "no" ]];then
   echo "$zz is ok"
fi
相关文章
|
7月前
|
Shell Windows Perl
Shell编程中的条件判断与流程控制
Shell编程中的条件判断与流程控制
91 0
|
7月前
|
Java 大数据 Shell
Shell基础学习---2、运算符、条件判断、流程控制(第一天学习)
大数据开发学习 Shell基础学习---2、运算符、条件判断、流程控制
|
2月前
|
Java Shell 网络安全
Shell 流程控制
10月更文挑战第4天
36 2
|
4月前
|
Shell
Shell基础知识(三)——流程判断
Shell基础知识(三)——流程判断
42 3
|
7月前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
7月前
|
运维 Shell Linux
第四章 Shell流程控制
第四章 Shell流程控制
|
7月前
|
监控 Shell 持续交付
利用Shell脚本自动化员工电脑监管软件的部署流程
在企业管理中,对员工的电脑活动进行监管是一项重要任务。而为了实现这一目标,部署监管软件是必不可少的。本文将介绍如何利用Shell脚本来自动化部署员工电脑监管软件的流程。我们将演示如何使用Shell脚本来自动下载、安装和配置监管软件,并且在部署完成后自动启动服务。
220 4
|
7月前
|
监控 Shell 持续交付
通过Shell脚本实现局域网管理软件的自动化部署流程
本文介绍了如何使用Shell脚本自动化局域网软件部署流程,以简化管理和提高效率。脚本包括定义安装目录、服务器列表和软件包,然后遍历服务器进行传输和解压。此外,还展示了通过Shell脚本监控网络设备和软件状态,并自动将监控数据提交到网站的功能,有助于及时发现和解决问题,提升系统稳定性。通过这种方式,可有效减轻管理员的工作负担,降低成本。
163 0
|
7月前
|
Shell
Shell流程控制
Shell流程控制
38 3
|
7月前
|
Java Shell Linux
Linux下的Shell基础——流程控制(三)
Linux下的Shell基础——流程控制(三)
70 0
Linux下的Shell基础——流程控制(三)