1.前言
虽然Bash条件判断的方法有很多,而逻辑运算的用法又稍微有所不同,但是用法大同小异,会用一种,能看懂别的用法就是成功,没必要所有的用法都掌握。所谓贪多嚼不烂,这里只会讲本人经过比较后,总结的一套方法,当然读者可以根据自己的喜欢和习惯部分替换或者全部替换。
2.优势
(1) 记住的东西比较少,不用记住所有,让学习的人更容易上手;
(2) 虽然记的东西比较少,但是根据本人的工作经验来看,足以应付所有情况;
(3) 让读者比较舒服,也省去了自己总结的时间和精力;
(4) 写脚本不用纠结用什么套路去写,因为就一套,没有分支!!!
3.方法
接下来直接讲方法,都是精华:
3.1 双中括号,永远滴神,统统用 ‘[[’ 和 ‘]]’ ,也就是用双中括号
# 比较数字大小,比较数字大小只要记住:
# 大于: -gt
# 小于: -lt
# 等于: -eq
# 大于等于、小于等于: -ge、-le
if [[ 10 -ge 9 ]];then
echo "10 >= 9"
else
echo "10 < 9"
fi
# 字符串或小数比较比较:
# 大于: >
# 小于: <
# 等于: =
# 小于等于: <=
# 大于等于: >=
if [[ "How are you" > "How much" ]];then
echo "How are you > How much"
else
echo "How are you > How much"
fi
if [[ 1.2 > 1.1 ]];then
echo "1.2 > 1.1"
else
echo "1.2 <= 1.1"
fi
# 存在性判断
# -f : 文件存在性
# -d : 目录存在性
# -L : 符号链接是否存在
# -b : 块设备是否存在
# -e : 是否存在,无论是什么
# 等等
# ! : 前面加!,表示相反
if [[ ! -f "/root/test" ]];then
echo "不存在/root/test"
touch /root/test
if [[ -f "/root/test" ]];then
echo "存在/root/test"
fi
fi
# 字符串为空
str=""
[[ -z ${str} ]] && echo "str 为空."
[[ ! -n ${str} ]] && echo "str 为空."
# 字符串非空
str="hello"
[[ -n ${str} ]] && echo "str 非空." || echo "str 为空"
[[ ! -z ${str} ]] && echo "str 非空." || echo "str 为空"
# 组合判断
# 或: ||
# 与: &&
# 非: !
value=10
if [[ ${value} > 9 && ${value} > 3 ]];then
echo "${value} > 9 && ${value} > 3"
fi
4.结尾
不用去学别的方式判断,因为就我写这么多脚本来看,这些方法完全可以做到所有事情!
test判断,单括号判断都只需要能看懂,也很好看懂的。
你以为双括号永远的神就只有这些? 错了,循环我们也用双括号。
5. 题外话
工作繁忙,更新可能比较慢,但是一定会坚持的!