解决linux shell用crontab定时器执行的脚本结果和手动执行脚本的结果不一致(比较字符串相等‘=’ ‘==’)...

原脚本代码

#!/bin/bash

cd ~/home/work/hours

RESP=`git pull`

if [ "$RESP" == "Already up-to-date." ];then

echo "already up-to-date" >> ~/home/logs/deploy.log

else

echo "no already, start redeploy server" >> ~/home/logs/deploy.log

sh ~/home/bin/deploy.sh >> ~/home/logs/detail.log 2>&1

fi

手动执行脚本结果和预想的一致


结果

但是加入crontab定时任务后,执行的结果却是错误的。


原因

这是因为if里的比较字符串用了==,这个比较符合在bash里是可以用的,但是在大部分的shell中都不能用,比如/bin/sh,
如果将此脚本的头部声明成#!/bin/sh,那么这段代码手动执行也是无法执行的


修正后的代码

#!/bin/sh

cd ~/home/work/hours

RESP=`git pull`

if [ "$RESP" = "Already up-to-date." ];then

echo "already up-to-date" >> ~/home/logs/deploy.log

else

echo "no already, start redeploy server" >> ~/home/logs/deploy.log

sh ~/home/bin/deploy.sh >> ~/home/logs/detail.log 2>&1

fi

总结

1.脚本头部声明用#!/bin/sh,因为这个shell符合posix标准。
2.比较字符串相等使用=而不是使用==

转载于:https://www.cnblogs.com/lomoye/p/7093977.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值