我正在尝试使用Robot Framework的pybot脚本设置一些自动化测试,该脚本允许您通过shell执行Robot测试。 pybot,对于那些不熟悉的人,随机器人框架一起安装到/ usr / local / bin,并且只是:
#!/usr/bin/python
import sys
from robot import run_cli
run_cli(sys.argv[1:])
有效地允许你从bash而不是python“本地”唤起它。现在,我试图调用pybot的方式如下:
cd /var/www/parsingdev/meTypeset/tests && for file in ./*.txt; do pybot -d $(echo "/var/www/parsingdev/robot/"$(echo $file | sed -e "s/\.\///g" -e "s/\.txt//g")) $file; done
如果我用sudo bash -c运行它并将它全部用单引号括起来,它运行正常。如果我将#!/ bin / bash声明作为第一行保存到/opt/robottest.sh并将命令作为第二行保存,并从shell调用它,它也可以正常工作。但是,当我使用这些方法中的任何一个通过root的cron运行它时,没有创建Robot测试的预期输出文件,所以有些东西不起作用。
我不明白 - 如果我只是做sudo env,它表明/ usr / local / bin在PATH中,所以它不应该找不到pybot,否则我不会我知道为什么运行它sudo应该不同于从root的crontab运行它。
赞赏的想法!
答案 0 :(得分:1)
root cron的环境(或一般的cron)与运行root bash时的环境不同。我怀疑pybot不在cron使用的PATH中。
通常,您希望确保所有路径都是完全限定的,或者为cron任务显式声明了PATH。