【发布时间】:2014-07-01 04:56:26
【问题描述】:
我有一个运行多个 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: cannot execute”
我在 shell 脚本中添加了一个“pwd”,它进入了正确的目录并且文件就在那里......
最奇怪的是,当我向它添加“./”时,它可以工作...但在第一个 shell 脚本中我不必...
有什么想法为什么去掉 if/then/else 会迫使我使用 perl 脚本?
感谢您提供的任何帮助。
【问题讨论】:
-
ls -l /ufs/00/home/usr/bin/ConsentforFoo.sh /ufs/00/home/usr/bin/apptTvoxforFoo.sh 返回什么?两个 perl 脚本都有正确的 shebang 吗? #!/usr/bin/perl
-
./script.pl不是“采购”脚本,它只是从相对路径调用它。 -
我认为这很可能是问题所在...此 sh 脚本设置为“-rw-r--r--”与“-rwxr-xr-x”用于正在运行的脚本...我有一种感觉,这将解决问题。菜鸟失误。谢谢!