(五)条件测试

条件测试语法

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

(1)文件 :判断文件或目录是否存在;返回命令执行结果$?

  • 文件判断符号
	-e:可以同时对文件或目录是否存在进行判断
	-f :判断文件是否存在
	-d 判断目录是否存在
	-r :判断当前用户对该文件是否有读权限
test -d /home
! test -d /home
test -f /etc/hosts
! test -f /etc/hosts  
[ -d /home ]
[ ! -d /test ] && mkdir /test
[ -d /test ] || mkdir /test  

(2)数字比较:

  • 比较符号
	-eq :等于
	-ge :大于等于
	-gt :大于
	-le	:小于等于
	-lt	:小于
	-ne :不等于
[ $UID -eq 0 ]
[ $UID -ne 0 ]
[ 1 -gt 10 ]
  • 数字比较案例
#!/bin/bash
disk=$(df -h | grep "/$" | awk '{print $(NF-1) }' | awk -F '[%]' '{print $1}')
if [ $disk -ge 5 ];then
        echo "disk is warning!!!"
fi

(3)字符串比较

  • 字符串比较符号
提示:字符串进行比较两边变量都使用双引号
	-z :如果变量长度为0,返回0值
	-n:如果变量长度为0,返回非0值
[ "$USER" = "root" ] ;echo $?
[ "$USER" == "root" ] ;echo $?
[root@localhost scripts]# var=""
[root@localhost scripts]# echo ${#var}
0
[root@localhost scripts]# [ -z "$var" ];echo $?
0
[root@localhost scripts]# [ -n "$var" ];echo $?
1

(4)连接符:

  • 连接符号
	-a:两边条件都成立,在表达式[]中使用
	-o:两边条件任意为真就为真,在表达式[]中使用
	&& :两边条件都成立,在表达式[[]]中使用
	||:两边条件任意为真就为真,在表达式[[]]中使用
[ 1 -gt 2 -a 2 -le 3 ];echo $?
1
[ 1 -gt 2 -o 2 -le 3 ];echo $?
0
[[ 1 -gt 2 && 2 -le 3 ]];echo $?
1
[[ 1 -gt 2 || 2 -le 3 ]];echo $?
0

(5)条件比较例子

#!/bin/bash
#################################################
#useradd                                        #
#v1.0 by love-linux     at 00/00/0000
################################################
read -p "please input number:" num
if [[ ! "$num" =~ ^[0-9]+$  ]];then
        echo "error number"
        exit
fi
read -p "please input prefix:" prefix
if [ -z $prefix ];then
        echo "error prefix"
        exit
fi
for i in $(seq 1 $num)
do
        user=$prefix$i
        useradd $user &>/dev/null
        if [ $? -eq 0 ];then
                echo "user $user is success created"
        else
                echo "user $user already exist"
                continue
        fi
        echo "123" | passwd --stdin $user  &>/dev/null
done
#!/bin/bash
#################################################
#useradd                                        #
#v1.0 by love-linux     at 00/00/0000
################################################
read -p "please input number:" num
while true
do
        if [[ ! "$num" =~ ^[0-9]+$  ]];then    #判断用户输入的是否是数字,[[]] 支持正则,=~ ^[0-9]+$可以判断用户输入的是否是数字
                echo "error number"
                read -p "please input number:" num

        else
                break
        fi
done
read -p "please input prefix:" prefix
while true
do
        if [ -z $prefix ];then                                    #判断用户输入的字符串是否为空,为空继续输入,不为空退出循环
                echo "error prefix"
                read -p "please input prefix:" prefix
        else
                break
        fi
done
for i in $(seq 1 $num)
do
        user=$prefix$i
        useradd $user &>/dev/null
        if [ $? -eq 0 ];then
                echo "user $user is success created"
        else
                echo "user $user already exist"
                continue
        fi
        echo "123" | passwd --stdin $user  &>/dev/null
done
posted @ 2018-04-19 17:01  你很棒  阅读(229)  评论(0编辑  收藏  举报