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

Shell脚本执行Perl代码导致奇怪的结果,perl,shell,scripting,cron,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

我有一个运行多个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
 #!/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
这个脚本工作完美。。。但是,第二个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
 #!/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:无法执行”

我在shell脚本中添加了一个“pwd”,它进入了正确的目录,文件就在那里

最奇怪的是,当我在上面加上“/”时,它就起作用了。。。但是在第一个shell脚本中,我不必

你知道为什么去掉if/then/else会迫使我编写perl脚本吗


感谢您提供的帮助。

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

./TvoxCron.pl

ls-l/ufs/00/home/usr/bin/approverforfoo.sh/ufs/00/home/usr/bin/apptTvoxforFoo.sh返回什么?两个perl脚本都有正确的shebang吗?#/usr/bin/perl
/script.pl
不是“寻找”脚本,它只是从一个相对路径调用它。我认为这是问题所在。。。此sh脚本设置为“-rw-r--r--”vs“-rwxr-xr-x”,用于正在工作的脚本。。。我觉得这会解决问题。新手犯的错误。谢谢嗯,我知道你的问题是为什么需要这段时间。。。可能第一种情况下的脚本在您的路径中,“无法执行”总是由于缺少执行权限。