Shell脚本执行Perl代码导致奇怪的结果

时间:2014-05-13 13:27:02

标签: perl shell scripting cron

我有一个运行多个shell脚本的cron作业:

30 1 * * 1-5 /ufs/00/home/usr/bin/ConsentforFoo.sh "prd"
15 1 * * 1-5 /ufs/00/home/usr/bin/apptTvoxforFoo.sh

第一个shell脚本如下所示:

 #!/bin/bash
 # ConsentforFoo.sh - set different environments, set path to perl scripts, calls      script

TMP_HOME=/home/localweb/htdocs/cgi-bin/usr/CFoodir

if [ "$1" = "dev" ] || [ "$1" = "uat" ] || [ "$1" = "prd" ]
then
cd $TMP_HOME/$1
My-Consent-Cron.pl
else
echo "Val Not Set: $1"
fi

这个脚本完美无缺......但是,第二个shell脚本看起来像这样:

 #!/bin/bash
 # apptTvoxforFoo.sh - sends MHT population and patients with multiple appointments to west

 TMP_HOME=/home/localweb/htdocs/cgi-bin/usr/CFoodir
cd $TMP_HOME
TvoxCron.pl #adding './' works here

但是当它运行时,我收到一个错误说:" sh:/ufs/00/home/usr/bin/apptTvoxforFoo.sh:无法执行"

我添加一个" pwd"到shell脚本,它进入正确的目录,文件就在那里......

最奇怪的是当我添加" ./"对它来说,它有效...但在第一个shell脚本中,我不必......

为什么把if / then / else取出来的任何想法会迫使我来源perl脚本?

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

您是否检查了目录和所有文件的文件权限?你能在文件前添加一个点,以确保你没有在路径上找到文件吗?

./TvoxCron.pl