写了一些shell脚本,测试也正常,放在crontab里定时调用,发现某些语句会调用失败,比如if、for、数组等等。
首先,需要排除路径的问题,crontab -e里是root权限调用,写成~是不识别的,需要写完整路径,有贴子说写在/etc/crontab里指定用户就好了。
其次,也是最狗血的,crontab -e方式默认使用的是sh解析,并不是bash,说是用了什么POSIX标准之类的,给我的感觉就是你按照百度上找来的教程来写脚本,在这种解释器下很可能是无法正常运行的……
解决方法1:
按照sh的脚本格式严格来写脚本,并使用sh xxx.sh来调用进行测试,但是学习成本太高,bash对我来说已经很复杂了,丫还不支持数组……
解决方法2:
crontab -e调用脚本前,加上bash命令,脚本不用改,顺利执行~~
解决方法3:
尽量不要用sh,改用python或lua之类的吧~
网友评论