shell 判断吗 可以多层if_Shell编程 -- if 当中的条件判断

30429654108bc5a57fe3665240e6541a.png

shell 当中的条件判断

简介: 在 Shell 编程当中, 经常会使用 if 进行条件判断, 那么条件判断当中的条件应该怎样标准的书写, 是我们需要思考的. 虽 然说在某种方式的书写能让 Shell 脚本正常运行, 但是对于后来人的理解和维护, 这是一个很大的成本. 本文提供了一种统一的写法, 方便理解和维护.

字符串相关

A="A"
B="AB"
C=""

## 等于 (=) , 不等于(!=)
if [[ ${A} = ${A} ]]; then
    echo '等于 if [[ ${A} = ${A} ]]'
fi

if [[ ${A} != ${B} ]]; then
    echo '不等于 if [[ ${A} != ${B} ]]'
fi


## 小于(<),  大于(>)
if [[ ${A} < ${B} ]]; then
    echo '小于 if [[ ${A} < ${B} ]]'
fi

if [[ ${B} > ${A} ]]; then
    echo '大于 if [[ ${B} > ${A} ]]'
fi

正则匹配

Bash下的正则匹配: if [[ ${V} =~ ${regex} ]] 模式匹配, 其中 ${regex} 要么是引用的变量, 要么是字面量 此操作只能在 Bash 下执行成功.
## 正则匹配 (=~)
A="A"
B="AB"
C=""

# 引用变量
regex='^A.*'
if [[ ${B} =~ ${regex} ]]; then
    echo '正则 if [[ ${V} =~ ${regex} ]]'
fi

# 字面量
if [[ ${B} =~ A.* ]]; then
    echo '正则 if [[ ${V} =~ ^.*$ ]]'
fi

变量相关

A="A"
B="AB"
C=""

## 空 -z , 非空 -n
if [[ -z ${C} ]]; then
    echo '为空 if [[ -z ${V} ]]'
fi

if [[ -n ${A} ]]; then
    echo '非空 if [[ -n ${V} ]]'
fi

数字相关

## 等于(-eq), 不等于(-ne)
X=1
Y=2

if [[ ${X} -eq ${X} ]];then
    echo '等于 if [[ ${X} -eq ${X} ]]'
fi

if [[ ${X} -ne ${Y} ]]; then
    echo '不等于 if [[ ${X} -ne ${Y} ]]'
fi

## 大于(-gt), 小于(-le), 大于等于(-gte), 小于等于(-lte)
if [[ ${Y} -gt ${X} ]]; then
    echo '大于 if [[ ${Y} -gt ${X} ]]'
fi

if [[ ${X} -lt ${Y} ]]; then
    echo '小于 if [[ ${X} -lt ${Y} ]]'
fi

文件路径相关

## 文件/目录存在 (-e)
if [[ -e '/root' ]]; then
    echo '存在 if [[ -e ${PATH} ]]'
fi


## 文件类型判断: 文件(-f), 目录(-d), 链接(-L)
if [[ -f '/proc/cpuinfo' ]]; then
    echo '文件 if [[ -f ${PATH} ]]'
fi

if [[ -d '/root' ]]; then
    echo '目录 if [[ -d ${PATH} ]]'
fi


# 文件权限: 可读(-r). 可写(-w), 可执行(-x)
if [[ -r '/root' ]]; then
    echo '可读 if [[ -r ${PATH} ]]'
fi

多个条件下的与(&&)和或(||)

## 且 (&&, -a),  或 (||, -o)

a=10
b=100

if [[ ${a} > 0 && ${b} > 0 ]]; then
    echo '且 [[ ${A} > 0 && ${B} > 0 ]]'
fi

if [[ ${a} > 0 ]] && [[ ${b} > 0 ]]; then
    echo '且 [[ ${A} > 0 ]] && [[ ${B} > 0 ]]'
fi


if [[ ${a} > 0 || ${b} > 0 ]]; then
    echo '或 [[ ${A} > 0 || ${B} > 0 ]]'
fi

if [[ ${a} > 0 ]] || [[ ${b} > 0 ]]; then
    echo '或 [[ ${A} > 0 ]] ||  [[ ${B} > 0 ]]'
fi

小结: 上面的格式应该是囊括了绝多数的情况, 使用上述的规范, 可以减少代码的出错概率和维护成本.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值