条件判断、if 语句


Bash中条件测试类型:

       整数测试

       文件测试

       字符测试

条件测试的表达式:

[ expreesion ]

    [[ expreesion ]]

    test expreesion

整数测试:

-eq:  测试两个整数是否相等;比如 $A -eq $B


    -ne:  测试两个整数是否不等;不等,为真;相等,为假;


    -gt:  测试一个数是否大于另一个数;大于,为真;否则,为假;


    -lt:  测试一个数是否小于另一个数;小于,为真;否则,为假;


    -ge:  大于或等于


    -le: 小于或等于

文件测试:

-e FILE:测试文件是否存在


    -f FILE:  测试文件是否为普通文件


    -d FILE: 测试指定路径是否为目录


    -r FILE:  测试当前用户对指定文件是否有读取权限


    -w FILE: 测试当前用户对指定文件是否有写权限


    -x FILE: 测试当前用户对指定文件是否有执行权限

    -s FILE: 测试当前文件是否不空,不空为真,空则假

字符测试:

==:测试是否相等,相等为真,不等为假


   !=:  测试是否不等,不等为真,等为假


   =~:  判断左边的字符串是否能够被右边的模式所匹配;通常用于[[]];


   >: 大于


   <:  小于


   -n string: 测试指定字符串是否为空,空则真,不空则假


   -z string: 测试指定字符串是否不空,不空为真,空则为假


命令的间逻辑关系:

    逻辑与: &&

    第一个条件为假时,第二条件不用再判断,最终结果已经有;

    第一个条件为真时,第二条件必须得判断;

    逻辑或: ||

第一个条件为真时,第二条件不用再判断,最终结果已经有;

     第一个条件为假时,第二条件必须得判断;

逻辑非:!

简单示例

如果用户存在,就显示用户已存在;否则,就添加此用户

[root@localhost ~]# id user1 && echo "user1" || useradd user1


如果用户不存在,就添加;否则,显示其已经存在

[root@localhost ~]# ! id user1 && useradd user1 || echo "user1 exists"


如果/etc/inittab文件的行数大于100,就显示好大的文件

[root@localhost ~]# [ `wc -l /etc/inittab | cut -d' ' -f1` -gt 100 ] && echo "large file"


if条件判断,控制结构

单分支if语句

if 判断条件; then(then换行时分号;可省略)
 statement1
 statement2
 ...
fi

双分支的if语句:

if 判断条件; then
statement1
statement2
...
else
statement3
statement4
...
fi

多分支的if语句:

if 判断条件1; then
 statement1
 ...
elif 判断条件2; then
 statement2
 ...
elif 判断条件3; then
 statement3
 ...
else
 statement4
 ...
fi

示例:


如果用户存在,就显示用户已存在;否则,就添加此用户

#!/bin/bash
if id user1 &>/dev/null ;then
  echo "user1 exists"
else
  useradd user1
fi

给定一个用户,如果其UID为0,就显示此为管理员;否则,就显示其为普通用户

#!/bin/bash
USERNAME=root
USERID=`id -u $USERNAME`
if [ $USERID -eq 0 ];then
  echo "$USERNAME is admin"
else
  echo "$USERNAME is a common user"
fi

给定一个文件:如果是一个普通文件,就显示之;如果是一个目录,亦显示之;否则,此为无法识别之文件;

#!/bin/bash
FILENAME=/etc/passwd
if [ -f $FILENAME ];then
  echo "$FILENAME"
elif [ -d $FILENAME ];then
  echo "$FILENAME"
else
 echo "wu fa shi bie gai wen jian"
fi

递一个参数(单字符就行)给脚本,如参数为q、Q、quit或Quit,就退出脚本;否则,就显示用户的参数

#!/bin/bash
if [ $1 == q ];then
  echo "Quiting..."
  exit 1
elif [ $1 == Q ];then
  echo "Quiting..."
  exit 2
elif [ $1 == quit ];then
  echo "Quiting..."
  exit 3
elif [ $1 == Quit ];then
  echo "Quiting..."
  exit 4
else
  echo "$1"
fi

你可能感兴趣的:(表达式,条件判断,if语句)