Shell条件判断语句与if

一、条件判断语句

满足条件执行对应命令

[ 条件 ]:一般多用于脚本内

例:

[ -f /etc/hosts ]

test 条件:一般多用于Linux字符终端

1.文件或目录判断

-f:判断是否为文件

-d:判断是否为目录

-e:判断是否存在

-r:判断文件/目录是否拥有读取权限

-w:判断文件/目录是否拥有写入权限

-x:判断文件/目录是否拥有执行权限

例:

[ -f /etc/hosts ] //判断/etc/hosts是否为一个文件,如是一个文件,则echo $?肯定为0

[ ! -f /etc/hosts ] ; touch /etc/hosts //判断/etc/hosts是否是一个文件,如不是一个文件,echo $?肯定为0

[ -d /etc ] //判断/etc是否为一个目录,如是一个目录,则echo $?肯定为0

[ -w /etc/hosts ] //判断/etc/hosts是否拥有写入权限,如拥有写入权限,则echo $?肯定为0

[ -e /boot ] //判断/boot是否存在,如存在,则echo $?肯定为0

2.数值比较

-eq:判断两边数值是否相等

-ne:判断两边数值是否不等

-gt:判断左边数值是否大于右边数值

-ge:判断左边数值是否大于等于右边数值

-lt:判断左边数值是否小于右边数值

-le:判断左边数值是否小于等于右边数值

例:

[ 1 -eq 1 ] //判断1是否等于1,如等于则echo $?肯定为0

[ 3 -le 5 ] //判断3小于等于5,如小于等于则echo $?肯定0

注:数值比较只能比较整数

3.字符串比较

==:判断两边字符串是否完全相等

-z:判断后需变量值是否未空

例:

[ $PWD == /root ] //判断PWD变量值是否等于/root,如等于则echo $?肯定为0

[ ! $PWD == /root ] //判断PWD变量值是否等于/root,如不等于则echo $?肯定为0

[ -z $PWD ] //判断PWD变量值是否为空,如为空则echo $?肯定为0

注:字符串指字母、数字、中文

4.逻辑测试

&& 或 ; 或 -a //并且关系,条件成立继续执行;make && make install(前命令执行成功后继续执行后续命令);find / -name a* - a -type f

|| 或 -o //或者关系,满足任一条件继续执行;find / -name a* - o -type f

! 条件取反

二、if语句

单分支语句:满足条件,则执行下面的命令;命令效果与[ -f /etc/a ] && chmod +x /etc/a

if [ 条件判断语句 ]

then

命令

fi

例:

if [ -f /etc/a ]

then

chmod +x /etc/a

fi

双分支语句:满足条件,则执行命令一,如不满足条件,执行命令二

if [ 条件判断语句 ]

then

命令一

else

命令二

fi

多分支语句:满足判断一则执行命令一,如不满足则继续判断二,满足则执行命令二, xxxx,如都不满足则执行命令x

if [ 条件判断语句一 ]

then

命令一

elif [ 条件判断语句二 ]

then

命令二

elif [ 条件判断语句三 ]

then

命令三

else

命令x

fi

#!/bin/bash

read -p "请输入您的分数:[1-100]" A

if [ $A -le 100 ]

then

if [ $A -eq 100 ]

then

echo "优"

elif [ $A -le 89 ] && [ $A -ge 70 ]

then

echo "良"

elif [ $A -le 69 ] && [ $A -ge 60 ]

then

echo "及格"

else

echo "你退群吧!!!"

fi

else

echo "你能不行行"

fi

注解:if先行判断用户输入数值是否在100以内,如在100以内继续判断,如不在则返回"你能不行行"

猜你喜欢

转载自blog.51cto.com/13770300/2149736