我有一个运行多个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脚本?
感谢您提供的任何帮助。
答案 0 :(得分:1)
您是否检查了目录和所有文件的文件权限?你能在文件前添加一个点,以确保你没有在路径上找到文件吗?
./TvoxCron.pl