我正在尝试根据在cron中调用它的环境调用位于不同目录中的perl脚本(来自shell脚本):
#!/bin/bash
# triggerCron.sh - set different environments, set path to perl scripts, calls script
TMP_HOME=/home/localweb/htdocs/cgi-bin/user1/localroot
if [ "$1" = "dev" ] || [ "$1" = "uat" ] || [ "$1" = "prd" ]
then
echo "Calling $1 OBTriggerCron.pl"
export PATH=$TMP_HOME/$1:$PATH
echo $PATH
./OBTriggerCron.pl
echo "Complete."
else
echo "Val Not Set: $1"
fi
我的想法是我可以先导出路径,然后调用脚本......然后只需要一个看起来像这样的crontab:
30 4 * * * /usr/bin/triggerCron.sh dev
30 4 * * * /usr/bin/triggerCron.sh uat
30 4 * * * /usr/bin/triggerCron.sh prd
但是当我跑步时,我得到了:
bash-3.00$ triggerCron.sh dev
Calling dev OBTriggerCron.pl
/home/localweb/htdocs/cgi-bin/user1/localroot/dev:/home/localweb/htdocs/cgi-bin/user1/localroot/dev:/home/localweb/htdocs/cgi-bin/user1/localroot/dev:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/ufs/00/home/user1/bin:/ufs/00/home/user1/mysql-tools:/home/ICoracle/bin
Can't open perl script "OBTriggerCron.pl": No such file or directory
基本上,我正在尝试TEMPORARILY设置路径,调用脚本并退出...但到目前为止,没有运气......是的,每个目录中都有一个OBTRiggerCron.pl脚本的副本。
感谢您的帮助。
答案 0 :(得分:3)
而不是
./OBTriggerCron.pl
执行:
$TMP_HOME/$1/OBTriggerCron.pl
在这种情况下无需导出PATH。
答案 1 :(得分:2)
./OBTriggerCron.pl
表示在当前目录中执行OBTriggerCron.pl。你需要
OBTriggerCron.pl
将在PATH中查看。
答案 2 :(得分:0)
谢谢你的帮助!这两个答案都有所帮助,但最大的帮助是Lee Duhem ....我正在调用设置文件(yml),我需要确保我是合适的导演**所以我带走了每个人#39;建议现在看起来像这样:
TMP_HOME=/home/localweb/htdocs/cgi-bin/user1/localroot
if [ "$1" = "dev" ] || [ "$1" = "uat" ] || [ "$1" = "prd" ]
then
echo "Calling $1 OBTriggerCron.pl"
cd $TMP_HOME/$1
OBTriggerCron.pl
echo "Complete."
else
echo "Val Not Set: $1"
fi
它有效!谢谢大家!