Shell条件判断语句与if
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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以内继续判断,如不在则返回"你能不行行"
以上是关于Shell条件判断语句与if的主要内容,如果未能解决你的问题,请参考以下文章