写了一个脚本:
[ -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.