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
相关文章
|
20天前
|
Shell Windows Perl
Shell编程中的条件判断与流程控制
Shell编程中的条件判断与流程控制
58 0
|
20天前
|
Java 大数据 Shell
Shell基础学习---2、运算符、条件判断、流程控制(第一天学习)
大数据开发学习 Shell基础学习---2、运算符、条件判断、流程控制
|
8月前
|
Shell Linux
|
8月前
|
Shell Linux
|
8月前
|
Shell Linux
|
8月前
|
Shell Linux
|
8月前
|
Shell Linux
|
8月前
|
监控 Shell Linux
Linux Shell高级用法:优化和自动化你的工作流程
Linux Shell是一个非常强大的工具,可以用于自动化任务、处理文本和数据、进行系统管理等。在这篇文章中,我们将介绍一些Linux Shell的高级用法,帮助你更高效地利用Shell完成各种任务。
110 0
|
20天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
20天前
|
运维 Shell Linux
第四章 Shell流程控制
第四章 Shell流程控制