【shell脚本】--条件测试

目录

shell条件测试

1.文件测试

1.常用方式

2.脚本使用方式

2.数值比较

         1.条件测试,脚本使用案例,创建用户

2.查看磁盘/当前使用状态,如果使用率超80%则报警发邮件

3.查看内存/当前使用状态,如果使用率超过80%则报警发邮件

3.字符串比较

1.字符串比对

2.字符串对比

3.多整数对比条件

4.正则比对

5.判断用户输入的是否是数字

6.批量创建用户脚本,测试使用

7.批量创建用户脚本,改进版


shell条件测试

格式一:test条件表达式

格式二:[条件表达式]

格式三:[[条件表达式]]

1.文件测试

[-e dir|file] 是否存在

[-d dir]是否存在,而且是目录

[-f file]是否存在,而且是文件

[-r file] 读权限

[-x file] 执行权限

[-w file] 写权限

[-L file]

1.常用方式

[root@www ~]# test -f test.txt
[root@www ~]# echo $?
1
[root@www ~]# ll | grep test.txt
[root@www ~]# [ ! -d test.txt ]&&touch test.txt
[root@www ~]# echo $?
0
[root@www ~]# ll | grep test.txt
-rw-r--r-- 1 root root      0 Jul  5 14:28 test.txt
[root@www ~]# rm test.txt -f
[root@www ~]# [ -f test.txt ]||touch test.txt
[root@www ~]# echo $?
0
[root@www ~]# ll | grep test.txt
-rw-r--r-- 1 root root      0 Jul  5 14:29 test.txt

2.脚本使用方式

[root@www ~]# vim backup.sh

#!/bin/bash
back_dir=/var/mysql_back

#test -d $back_dir || mkdir -p $back_dir
if [ ! -d $back_dir ];then
     mkdir -p $back_dir
fi
echo "开始备份..."

运行结果如下:

[root@www ~]# bash backup.sh 
开始备份...

2.数值比较

数值比较[ 整数1 操作符 整数2 ]

[  10 -gt 20 ]  大于

[  1 -lt 10 ] 小于

[  1 -eq 10 ] 等于

[  10 -ne 20 ] 不等于

[  10 -ge 20 ]  大于等于

[ 10 -le 20 ]  小于等于

 1.条件测试,脚本使用案例,创建用户

[root@www ~]# vim  creat_user.sh

#!/bin/bash
read -p "Pleases input a username: " user

#if id $user &> /dev/null;then

id $user &> /dev/null
if [ $? -eq 0 ];then
   echo "user $user already exists"
else
   useradd $user
   if [ $? -eq 0 ];then
      echo "$user created."
   fi
fi

测试结果如下:

[root@www ~]# bash creat_user.sh 
Pleases input a username: yangf
yangf created.
[root@www ~]# bash creat_user.sh 
Pleases input a username: yangf
user yangf already exists

2.查看磁盘/当前使用状态,如果使用率超80%则报警发邮件

//怎么查看磁盘使用率,怎么获取对应的值
df -h|grep "/$" |awk '{print $5}'|awk -F '%' '{print $1}'


//怎么进行数值对比
if [ $Disk_Free -ge 30 ];then
   echo "Disk is user${Disk_Free}%" > /tmp/disk_use.txt
fi

脚本:

[root@www ~]# vim disk_free.sh

#!/bin/bash
Disk_Free=$(df -h | grep "/$"|awk '{print $5}'|awk -F '%' '{print $1}')

if [ $Disk_Free -ge 80 ];then
   echo "Disk Is Use:${Disk_Free}%" > /tmp/disk_use.txt
fi

3.查看内存/当前使用状态,如果使用率超过80%则报警发邮件

[root@www ~]# vim mem.sh

#!/bin/bash
Mem_Total=$(free -m|grep "^M"|awk '{print $2}')
Mem_Use=$(free -m|grep "^M"|awk '{print $3}')
Mem_B=$((($Mem_Use*100)/$Mem_Total))

if [ $Mem_B -ge 80 ];then
   echo -e "\033[31m Memory Is Err ${Mem_B}% \033[0m"
  else
   echo -e "\033[32m Memory Is OK ${Mem_B}% \033[0m"
fi

3.字符串比较

1.字符串比对

[root@www ~]# [ "$USER" = "root" ];echo $?
0
[root@www ~]# [ "$USER" == "root" ];echo $?
0
[root@www ~]# AAA=""
[root@www ~]# echo ${#AAA}
0

[root@www ~]# [ -z "$AAA" ]    字符长度为0
[root@www ~]# echo $?
0

[root@www ~]# [ -n "$AAA" ]    字符长度不为0
[root@www ~]# echo $?
1

//变量为空或未定义: 长度都为0

2.字符串对比

[root@www ~]# [ "$USER" = "root" ];echo $?
0
[root@www ~]# [ "$USER" = "yangf" ];echo $?
1
[root@www ~]# [ "$USER" != "xiaoming" ];echo $?
0

3.多整数对比条件

[root@www ~]# [ 5 -lt 6 -a 8 -gt 10 ];echo $?
1
[root@www ~]# [ 5 -lt 6 -o 8 -gt 10 ];echo $?
0


[root@www ~]# [[ 5 -lt 6 && 8 -gt 10 ]];echo $?
1
[root@www ~]# [[ 5 -lt 6 || 8 -gt 10 ]];echo $?
0

4.正则比对

[root@www ~]# [ "$USER" = "root" ];echo $?
0
[root@www ~]# [ "$USER" =~ ^r ];echo $?
-bash: [: =~: binary operator expected
2
[root@www ~]# [[ "$USER" =~ ^r ]];echo $?     //使用正则
0


//判断变量是不是数字
[root@www ~]# num=123
[root@www ~]# [[ "$num" =~ ^[0-9]+$ ]];echo $?
0
[root@www ~]# [[ "$num20" =~ ^[0-9]+$ ]];echo $?
1

[root@www ~]# num20=5555555
[root@www ~]# [[ "$num20" =~ ^[0-9]+$ ]];echo $?
0

5.判断用户输入的是否是数字

#!/bin/bash

read -p "请输入一个数值:" num
if [[ "$num" =~ ^[0-9]+$ ]];then
    echo "Number Is $num"
    exit
fi
echo " 你输入的不是数字,程序退出!!!"

6.批量创建用户脚本,测试使用

[root@www data]# vim creat_user.sh

#!/bin/bash

read -p "请输入创建的各数: " num
read -p "请输入创建的名称" prefix

for i in `seq $num`
do
    user=$prefix$i
    useradd $user
    echo "123" |passwd --stdin $user &> /dev/null
    if [ $? -eq 0 ];then
       echo "$user is created."
    fi
done

测试结果:

[root@www data]# bash creat_user.sh 
请输入创建的各数: 5
请输入创建的名称yangftest
yangftest1 is created.
yangftest2 is created.
yangftest3 is created.
yangftest4 is created.
yangftest5 is created.


[root@www data]# cat /etc/passwd | grep yangftest
yangftest1:x:1001:1001::/home/yangftest1:/bin/bash
yangftest2:x:1002:1002::/home/yangftest2:/bin/bash
yangftest3:x:1003:1003::/home/yangftest3:/bin/bash
yangftest4:x:1004:1004::/home/yangftest4:/bin/bash
yangftest5:x:1005:1005::/home/yangftest5:/bin/bash

7.批量创建用户脚本,改进版

[root@www data]# vim creat_user1.sh

#!/bin/bash

read -p "请输入你需要创建的用户数:" num
if [[ ! "$num" =~ ^[0-9]+$ ]];then
   echo "error number!" && exit 1
fi

read -p "请输入你需要创建的用户名:" prefix
if [ -z "$prefix" ];then
   echo "error prefix"
   exit
fi
for i in `seq $num`
do
   user=$prefix$i
   useradd $user
   echo "123456" |passwd --stdin $user &>/dev/null
   if [ $? -eq 0 ];then
      echo "$user is created."
   fi
done

测试:

[root@www data]# bash creat_user1.sh 
请输入你需要创建的用户数:3
请输入你需要创建的用户名:jiejie
jiejie1 is created.
jiejie2 is created.
jiejie3 is created.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值