整数测试 字符测试 文件测试
1、[ expression ] 命令测试 2、[[ expression ]] 关键字测试 3、test expression
-eq:测试两个整数是否相等;相等为真,不等为假 -ne:测试两个整数是否不等;不等为真,相等为假 -gt:测试一个数是否大于另一个数;大于为真,否则为假 -lt:测试一个数是否小于另一个数;小于为真,否则为假 -ge:大于或等于 -le:小于或等于
!:表示非(取反) 逻辑与:&& 逻辑或:|| CMD1 && CMD2 Example:id aaa && echo "hello aaa" 如果&&前的执行结果是假,总的结果就是假,没必要执行&&后的操作 如果CMD1成功了(真),就可执行CMD2 如果CMD1失败了(假),就不执行CMD2 如果aaa用户存在,则打印hello aaa;如果用户aaa不存在,则不进行打印 CMD1 || CMD2 Example:id aaa || useradd aaa 如果||前的执行结果是真,总的结果就是真,没必要执行||后的操作CMD2 如果CMD1成功了(真),就不执行CMD2 如果CMD1失败了(假),就可执行CMD2 如果用户aaa存在,就不执行创建aaa用户的命令;如果aaa用户不存在,则创建该用户 EXAMPLE: id aaa && echo user aaa exists || useradd aaa 如果用户aaa存在,打印user aaa exists;如果用户不存在,则创建该用户;&&前如果为真,则整个逻辑与为真,再与后面的命令做逻辑或; !id aaa && useradd aaa || echo user aaa exists 取反;如果用户不存在,则创建用户;如果用户存在,则打印user aaa exists; !id bbb &>/dev/null && useradd aaa && echo 123456 | passwd --stdin bbb &>/dev/null || echo "bbb exists" 用户不存在则创建用户并且改密码;用户存在则打印bbb exists; USERID=`id -u bbb`;[ $USERID -eq 0 ] && echo "admin" || echo "common" 如果bbb用户的uid等于0,打印admin;不等于0,打印common;
if 判断条件;then statement1 statement2 ... fi Example1: #!/bin/bash NAME=aaa if id $NAME &>/dev/null;then #id $NAME取的是命令的执行状态返回值;命令是否执行成功 echo "$NAME exists" fi
if 判断条件;then statement1 statement2 ... else statement3 statement4 ... fi Example2: #!/bin/bash NAME=aaa USERID=`id -u $NAME` #`id -u $NAME`取的是命令的执行结果 if [ $USERID -eq 0 ];then #做等值判断需要加"[ ]" echo "$NAME is admin" #可以不添加$USERID变量,写为 [ `id -u $NAME` -eq 0 ] else echo "$NAME is common" fi Example3: #!/bin/bash grep "bash$" /etc/passwd &>/dev/null if [ $? -eq 0 ];then AUSER=`grep "bash$" /etc/passwd | head -1 | cut -d: -f1` echo "The user is $AUSER" else echo no such user fi $?判断上一条命令执行是否成功,如果成功则状态返回值为0;当$?的状态返回值等于0时,那么限制一个用户,否则显示没有这样的用户 Example4: #!/bin/bash USERNAME=user2 USERID=`id -u $USERNAME` GROUPID=`id -g $USERNAME` if [ $USERID -eq $GROUPID ];then echo "good boy" else echo "bad boy" fi 判断用的UID和GID是否相等,相等显示good boy;不相等显示bad boy
[root@localhost ~]# A=2 [root@localhost ~]# B=3 [root@localhost ~]# let C=$A+$B [root@localhost ~]# echo $C 5
[root@localhost ~]# A=6 [root@localhost ~]# B=8 [root@localhost ~]# C=$[$A+$B] [root@localhost ~]# echo $C 14
[root@localhost ~]# A=1 [root@localhost ~]# B=2 [root@localhost ~]# C=$(($A+$B)) [root@localhost ~]# echo $C 3
[root@localhost ~]# A=3 [root@localhost ~]# B=3 [root@localhost ~]# C=`expr $A + $B` [root@localhost ~]# echo $C 6 Example: [root@localhost ~]# TIMESTAMP=`date +%s` [root@localhost ~]# let USEDATES=$TIMESTAMP/86400 [root@localhost ~]# echo $USEDATES 18234
Example: #!/bin/bash USERNAME=user10 if ! grep "$USERNAME" /etc/passwd & >/dev/null;then #if会自动判断后面命令的状态返回值;0为真,1——255皆为假 echo "no such $USERNAME" exit 1 fi 没有user10用户,打印 no such user10,并且exit退出整个脚本,状态返回值定义为1
原文:https://www.cnblogs.com/dongzhanyi123/p/11985915.html