微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 如果声明不在cron中工作

我有以下代码:(record.sh)

cd $(dirname $0)

dt=$(date '+%d/%m/%Y %H:%M:%s');
echo $dt;
read action < /home/nfs/sauger/web/pi/action.txt
echo $action;
if [[ $action == *"start"* ]]
then
  echo "start recording"
  ./gone.sh
  exit 1
elif [[ $action == *"stop"* ]]
then
 echo "stop recording"
  ./gone.sh
  exit 1
else 
#More stuff done here
fi

当我手动运行此脚本时,输出如下:

19/01/2016 19:07:11
start
start recording

如果通过(root)cronjob运行相同的脚本,则输出如下:

19/01/2016 19:07:01
start

正如您所看到的,文件“action.txt”已经被读取而没有问题(两次都记录了“start”),因此这不应该是权限或错误路径的问题.但是当作为cronjob运行时,不会调用if语句.没有“开始录制”.

所以我的问题是:为什么if语句在我手动调用脚本时有效,而不是在通过cron完成时?

解决方法:

你的脚本是为bash编写的;这些错误几乎肯定表明它与/ bin / sh一起运行.

添加一个合适的shebang并确保以一种尊重它的方式调用它(/ path / to / script而不是sh / path / to / script),或者将其修复为兼容.例如:

case $action in
  *start*)
    echo "start recording"
    ./gone.sh
    exit 1
    ;;
  *stoP*)
    echo "stop recording"
    ./gone.sh
    exit 1
    ;;
esac

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐