坚持认真做一件事 时间看得见

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3916|回复: 0

shell脚本中的&&和||

[复制链接]

414

主题

417

帖子

2048

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2048
发表于 2022-10-24 11:01:43 | 显示全部楼层 |阅读模式
写了一个脚本:
[ -e deploy.sh] && sh deploy.sh ||echo "-----------the deploy.sh is not exit"
本想实现,脚本文件存在就执行脚本文件deploy.sh,如果不存在就提示脚本文件不存在。
后来发现deploy.sh有执行,但也会提示脚本文件不存在。
检查发现如果deploy.sh脚本执行的结果$?不为0,就是执行过程有出错。那么就是执行"||"之后的那句程序,提示脚本文件不存在。
因为||会把这行前面出现的的两个语句的结果做为依据判断是否运行,我原以为只有&&前面的那句运行结果做为依据。

所以如果改为
if [ -e deploy.sh ]; then
    sh deploy.sh
else
   echo "-----------the deploy.sh is not exit"
fi
这样就没有问题。
结论:
A && B || C  :(1)如果A为真,执行B;(2)如果A 为假,则执行C;(3)如果A为真且B为假,则执行C.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|坚持认真做一件事 时间看得见 ( 闽ICP备17010916号 )

GMT+8, 2026-5-3 02:28 , Processed in 0.054562 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表