从bash / shell脚本调用perl脚本

时间:2014-04-21 15:37:25

标签: perl shell cron

我正在尝试根据在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脚本的副本。

感谢您的帮助。

3 个答案:

答案 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

它有效!谢谢大家!