【问题标题】:Shell Script execution of Perl code causing weird resultsPerl 代码的 Shell 脚本执行导致奇怪的结果
【发布时间】: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”用于正在运行的脚本...我有一种感觉,这将解决问题。菜鸟失误。谢谢!

标签: perl shell scripting cron


【解决方案1】:

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

./TvoxCron.pl

【讨论】:

  • 嗯,我明白你的问题是为什么需要句号......也许第一种情况下的脚本在你的路径中?
  • “无法执行”总是因为没有执行权限。
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
相关资源
最近更新 更多