Shell脚本执行Perl代码导致奇怪的结果
我有一个运行多个shell脚本的cron作业: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
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”,用于正在工作的脚本。。。我觉得这会解决问题。新手犯的错误。谢谢嗯,我知道你的问题是为什么需要这段时间。。。可能第一种情况下的脚本在您的路径中,“无法执行”总是由于缺少执行权限。