【发布时间】:2014-06-05 16:53:38
【问题描述】:
我正在尝试调用位于不同目录中的 perl 脚本(来自 shell 脚本),具体取决于在 cron 中调用它的环境:
#!/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
基本上,我正在尝试临时设置路径,调用脚本并退出...但到目前为止,没有运气...是的,每个目录中都有 OBTRiggerCron.pl 脚本的副本。
感谢您的帮助。
【问题讨论】:
-
在你的脚本中运行
pwd来显示它当前的工作目录,它可能不是你所期望的。