if 基本语法 与或非 和 shell test

if 基本语法

if [ cmd ] 
then  
    满足该条件的执行语句
elif [ cmd ]
then 
    满足该条件的执行语句
else
    满足该条件的执行语句
fi

if [ ] 中括号需要和判断条件前后留空格

文件/文件夹(目录)判断

[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
[ -d DIR ]  如果 FILE 存在且是一个目录则为真。
[ -e FILE ] 如果 FILE 存在则为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。 
[ -G FILE ] 如果 FILE 存在且属有效用户组则为真。 
[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真 
[ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。 
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。 
[ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。 
[ -r FILE ] 如果 FILE 存在且是可读的则为真。 
[ -s FILE ] 如果 FILE 存在且大小不为0则为真。 
[ -S FILE ] 如果 FILE 存在且是一个套接字则为真。 
[ -t FD ]   如果文件描述符 FD 打开且指向一个终端则为真。 
[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。 
[ -w FILE ] 如果 FILE存在且是可写的则为真。 
[ -x FILE ] 如果 FILE 存在且是可执行的则为真。 
[ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。 
[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。 
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。 
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真

if [ -f ${MIGRATE_FILE}.tar.gz ]
then
    rm  -rf ${MIGRATE_FILE}.tar.gz
fi
if [ -d ${MIGRATE_FILE} ]
then 
    rm -rf  ${MIGRATE_FILE}
fi

数值测试

-eq 等于则为真。
-ne 不等于则为真。
-gt 大于则为真。
-ge 大于等于则为真。
-lt 小于则为真。
-le 小于等于则为真。

字串测试

登录后复制 
= 等于则为真。
!= 不相等则为真。
-z字串 字串长度伪则为真。
-n字串 字串长度不伪则为真。
==========================================

数学计算命令

要想让数学计算发挥作用,必须使用数学计算命令,Shell 中常用的数学计算命令如下表所示。
 

Shell 中常用的六种数学计算方式
运算操作符/运算命令说明
(( ))用于整数运算,效率很高,推荐使用
let用于整数运算,和 (()) 类似。
$[]用于整数运算,不如 (()) 灵活。
expr可用于整数运算,也可以处理字符串。比较麻烦,需要注意各种细节,不推荐使用。
bcLinux下的一个计算器程序,可以处理整数和小数。Shell 本身只支持整数运算,想计算小数就得使用 bc 这个外部的计算器。
declare -i将变量定义为整数,然后再进行数学运算时就不会被当做字符串了。功能有限,仅支持最基本的数学运算(加减乘除和取余),不支持逻辑运算、自增自减等,所以在实际开发中很少使用。
如果大家时间有限,只学习 (()) 和 bc 即可,不用学习其它的了:(()) 可以用于整数计算,bc 可以小数计算。

if 逻辑使用



形式:
条件1 与 条件2

使用方法一

if [ $value == "stop" -a $value == "restart" ]; then
  excute=$value
fi  

使用方法二
if [ $value == "stop" ] && [ $value == "restart" ]; then
  excute=$value
fi  


形式:
条件1 或 条件2

使用方法一

if [ $value == "stop" -o $value == "restart" ]; then
  excute=$value
fi  

使用方法二
if [ $value == "stop" ] || [ $value == "restart" ]; then
  excute=$value
fi  
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿破仑的海阔天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值