Cat-God-007

导航

Shell脚本编程学习笔记(三)---- 条件测试

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

Shell 条件测试

格式1:test  条件表达式
格式2[  条件表达式 ]
格式3[ [  条件表达式  ] ]

1.文件测试

[ -e dir|file ] 测试目录或者文件是否存在

[ -d dir ] 测试是否为目录

[ -f file ] 是否是文件

[ -r file ] 当前用户对该文件是否有读权限

[ -x file ] 测试文件是否有执行权限

[ -w file ] 测试当前用户是否有写入权限

例如

vi create_yum.sh 
#!/bin/bash
#用于创建本地yum仓库的脚本
#挂载镜像文件
[ -d  /opt/centos ] || mkdir  /opt/centos
[ -d  /opt/mitaka ] || mkdir  /opt/mitaka
( 判断/opt/centos,mitaka目录是否存在,||表示逻辑或,若目录存在,则直接执行下一条命令,若不存在,执行后面的mkdir )
​
[ -e /root/CentOS-7-x86_64-DVD-1511.iso] && mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos
[ -e /root/Mitaka.iso] && /root/Mitaka.iso /opt/mitaka/
( 判断/root/CentOS-7-x86_64-DVD-1511.iso,Mitaka.iso是否存在,&&表示逻辑且,若目录存在,执行后面的mount 若不存在,则直接执行下一条命令,)
​
#配置repo文件
cd /etc/yum.repos.d/
[ -d lod ] || mkdir lod
[ -f local.repo ] || touch local.repo
ls *.repo &> /dev/null
[ $? -eq 0 ] ||  mv *.repo lod
(判断上一条命令是否正确,等于0说明命令正确,直接执行下一条命令,若不等于0,执行后面的mv)
cat >  local.repo << END
[centos]
name=centos
gpgcheck=0
enabled=1
baseurl=file:///opt/centos
[Mitaka]
name=mitaka
gpgcheck=0
enabled=1
baseurl=file:///opt/mitaka/Openstack-Mitaka
END
#清理并重建缓存
yum clean all &> /dev/null && yum makecache fast &> /dev/null
[ $? -eq 0 ] && echo "本地YUM仓库配置完毕,您可通过(yum list)等形式查看controller节点yum源安装是否完毕。"
sh create_yum.sh 

2.数值比较

-eq: 等于(=)

-ne : 不等于(!=)

-gt : 大于(>)

-lt : 小于 (<)

-le : 小于或等于 (<=)

-ge : 大于或等于(>=)

例如

屏幕截图 2021-06-11 161407.png

touch /tmp/disk_use.txt
vi disk_free.sh
#!/bin/bash
Disk_Free=$(df -h|grep "/$"|awk '{print $5}'|awk -F '%' '{prnt $1}')
if  [  $Disk_Free -ge  80 ];then
          echo "Disk Is Use:${Disk_Free}%" > /tmp/disk_use.txt
fi

在多条件的时,可以使用 -a 相当于and

例如

$num -ge 0 -a $num -le 10          #大于0,小于10

3.字符串比较

= 第一个字符串于第二字符串相同

!= 表示不相同,!示取反的意思

-z 检查字符串是否为空(zero) ,定义或赋予控制的变量,一般用于测试变量值

例如

批量创建用户,配置固定密码(20220522)

用户需要输入用户名,前缀即可

vi useradd.sh
#!/bin/bash
read -p "请输入用户名:" user            #创建的用户个数
while true
do
    if [[ ! $user =~ ^[0-9]+$ ]];then      #匹配到不是数字的,就输出
              echo "错误,请输入数字"
              read -p "请输入用户名:" user                
    else      
              break
    fi
doneread -p "请输入用户前缀:" pre
while true
do
    if [[ $pre =~ ^[a-Z]+$ ]];then      #匹配到的不是数字,就跳出循环
             break               
    else      
             echo "错误,请输入拼音"
             read -p "请输入用户前缀:" pre
    fi
done
#批量创建用户,并设置统一密码
for i in $(seq $user);do
        username=$pre$i
        useradd $username  &>/dev/null
        echo "20220522"|passwd --stdin $username &>/dev/null
        if [ $? -eq 0 ];then
                  echo "Create User is OK $username"
        fi
done
sh useradd.sh

ADE5FEF1950B58DA243E646138DD9E29 (3).jpg 感谢大家,点赞,收藏,关注,评论!

posted on 2022-05-31 20:01  CatGod007  阅读(1)  评论(0)    收藏  举报  来源