Linux:shell脚本:基础使用(2)

test命令

格式1:test  条件表达式

格式2:[  条件表达式  ]  (前后至少应有一个空格)

常用的测试操作符

-d:测试是否为目录(Directory)

-e:测试目录或文件是否存在(Exist)

-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)

-w:测试当前用户是否有权限写入(Write)

-x:测试当前用户是否有权限执行(eXcute)

test -e /etc/passwd

# 测试/etc/passwd这个文件或者目录是否存在 

echo $?

输出0表示条件成立,也就是有这个文件或者目录

Linux:shell脚本:基础使用(2)_第1张图片

 但是在实际中我们不经常使用这种语法,我们常用的语法为[  条件表达式  ]这种格式

  [  -d /media/cdrom  ]

 # 是否有/media/cdrom这个文件

echo $?

只有0代表成立,也就是有,非0的任何数字都是无(不成立) 

 Linux:shell脚本:基础使用(2)_第2张图片

Linux:shell脚本:基础使用(2)_第3张图片

这个就是文件存在

 附加:(提前看看后面会讲)

[ -d /etc/sysconfig/ ] && echo "YES"

&&逻辑与,“而且”的意思

意思就是只要成立了就一起执行与后面的 


整数值比较 

格式:[  整数1  操作符  整数2  ]

    常用的测试操作符

-eq:等于(Equal)

-ne:不等于(Not Equal)

-gt:大于(Greater Than)

-lt:小于(Lesser Than)

-le:小于或等于(Lesser or Equal)

-ge:大于或等于(Greater or Equal)

cat /etc/passwd | wc -l

# 查看有几行

[ $(cat /etc/passwd | wc -l) -gt 10 ] && echo "用户数量大于10"

[ $(cat /etc/passwd | wc -l) -ge 27 ] && echo "用户数量大于等于27"

aaa=$(free -m | grep -i "mem" | awk '{print $4}')

# 查看空闲内存将值赋予给变量aaa

[ $aaa -lt 10240 ] && echo "空闲内存为 ${aaa}MB"

# 空闲内存是否 < 10240MB 如果小于了就会执行后面的话


 字符串比较

格式1:[  字符串1  =  字符串2 ]                      [  字符串1  !=  字符串2 ]

格式2:[  -z  字符串 ]

常用的测试操作符

=:字符串内容相同

!=:字符串内容不同,! 号表示相反的意思

-z:字符串内容为空

echo $LANG

  

查看一下当前的系统语言环境

 [ $LANG !=  "en.US" ] && echo  "系统语言不是en.US"

# 如果输出的字符串不是en.US则执行后面的语句


附加:(提前看看后面会讲)

read -p "是否覆盖现有文件(yes/no)?"  asd
[ $asd = "yes" ] && echo "覆盖" || echo "不覆盖"

# 如果交互输入了yes那执行第二句时候就会输出覆盖,相反则不覆盖


逻辑测试 

格式1:[  表达式1  ]  操作符  [  表达式2  ]  
格式2:命令1  操作符  命令2  

常用的测试操作符

-a或&&:逻辑与,“而且”的意思

-o或||:逻辑或,“或者”的意思

!:逻辑否

echo $USER

#这个是显示当前登录用户的变量

[ $USER != "test" ]  &&  echo "当前用户不是test"

# 当前前面的条件成立会输出&&后面的

[ -d /media/cdrom ] && echo "YES" || echo "NO"

# 测试是否有文件,如果有的话(成立)就输出yes,如果没有(不成立)就输出no

Linux:shell脚本:基础使用(2)_第4张图片

 [ $(ps aux | wc -l) -lt 100 ] && echo "YES" || echo "NO"

 # 这个是测试当前进程数是否小于100

rpm -q sysstatpackage 
 [ $? -eq 0 ] && echo "Installed." || echo "Not installed."

测试软件是否安装  如果安装了则输出installed  如果没安装就输出 not installed

vim rpm_install.sh

#!/bin/bash

# 查看rpm软件是否已安装
rpm -q $1 &> /dev/null

# 已安装输出结果,未安装则进行安装

[ $? -eq 0 ] && echo "$1 软件已安装"  || yum -y install $1 &> /dev/null

if语句

【单分支结构】 

if  条件测试操作
    then   命令序列
fi 

 【双分支结构】

if  条件测试操作
    then   命令序列1
    else   命令序列2
fi

【多分支结构】

if  条件测试操作1

    then  命令序列1

elif  条件测试操作2 

    then  命令序列2

else

  命令序列3

fi

 Linux:shell脚本:基础使用(2)_第5张图片

Linux:shell脚本:基础使用(2)_第6张图片 

这个就是一个单分支案例 ,判断是否有文件

 Linux:shell脚本:基础使用(2)_第7张图片

Linux:shell脚本:基础使用(2)_第8张图片 

双分支案例,如果可以还是不可以ping通输出的内容不一样 

Linux:shell脚本:基础使用(2)_第9张图片

Linux:shell脚本:基础使用(2)_第10张图片

这个是一个多分支的if语句,只要你需要可以写上无数个elif

 

你可能感兴趣的:(linux,运维,服务器,shell脚本)