2011-03-26 106 views
-4

有一个壳牌程序。外壳程序:壳牌出口不起作用

  1. 包含一个命令(这是另一个shell程序),它运行并打印三个值。
  2. 然后输出这三个值。
  3. 最后一个Perl文件被执行(这使用导出的值)。

所有这一切都发生在一个shell文件。

我的问题是出口并不在Perl的文件发生。可能是什么问题呢?

+1

你必须给我们更多的去做。至少可以发布shell脚本吗?可能也是perl脚本呢? – psmears 2011-03-26 14:51:44

+0

此qwuestion值得尽可能最短的答案:任何事情。说真的,你认为我们是魔术师吗?顺便说一句,我们中的一些人确实可以告诉你,你的概念很可能不起作用。 – Ingo 2011-03-26 14:52:41

+0

我们可以通过脚本来说明问题吗?你甚至不会说这是哪个壳。 – IanNorton 2011-03-30 19:16:03

回答

0

正如评论指出这是一个有点难以用这一数额的信息来诊断,但你不会有,如果你做的Perl脚本从标准输入,而不是从环境中读取的值以出口任何东西。那么你的“shell程序”只是

command_from_step_1 | perl_script_from_step_3 

与中间的管道字符。

2

你真的不给我们太多去,但下面的脚本符合标准的问题。它产生答案6.(1)中的命令是echo,它打印三个值。 (2)中的命令显然是export行。 (3)中的命令是perl命令,该命令将环境变量a,b和c中的值加上一个换行符。

set -- $(echo a=1 b=2 c=3) 
export $1 $2 $3 
perl -e 'print $ENV{a} + $ENV{b} + $ENV{c}, "\n"' 

有很多可能的变化,我不认为这是解决您的问题的好办法。但它符合规定的标准。不过,你会做得更好,以表明你自己试图解决问题,并寻求帮助来改进它。

而且,如果运行脚本,你会看到,export确实工作。如果它不在你的脚本中工作,这意味着你在滥用它。但是,由于您没有向我们展示您的代码,因此我们无法帮助您解决代码中的问题。这是一个可怜的工匠,他自己的缺点归咎于他的工具。这是一个泰罗的标志,声称每天有数百万人成功使用的东西“不起作用”。你有一个很小的机会,你已经找到了一个破解的方式 - 但机会是微乎其微的,必须详细说明。

+0

使用我的水晶球,我怀疑rathika的错误是认为在$ perl脚本中可以使用$ a而不是$ ENV {a}。 – 2011-03-27 12:56:15

0

尝试运行该脚本与外壳的“-x”选项,看看发生了什么。