壳牌出口不起作用

时间:2011-03-26 14:49:45

标签: perl shell unix

有一个shell程序。 shell程序:

  1. 包含一个命令(这是另一个shell程序),它运行并打印三个值。
  2. 然后导出三个值。
  3. 最后执行Perl文件(这使用导出的值)。
  4. 所有这些都发生在一个shell文件中。

    我的问题是导出不会发生在Perl文件中。可能是什么问题?

3 个答案:

答案 0 :(得分: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确实有效。如果它在你的脚本中不起作用,那一定意味着你在滥用它。但是,由于您没有向我们展示您的代码,我们无法帮助您解决代码中的问题。这是一个可怜的工匠,他把自己的工具归咎于自己的缺点。声称数百万人每天成功使用的东西“不起作用”是一个标志。你很少有机会找到它破碎的方式 - 但机会很小,而且必须详细说明。

答案 1 :(得分:0)

如评论中所述,使用此信息量进行诊断有点困难,但如果您使perl脚本从标准输入而不是从环境中读取值,则不必导出任何内容。然后你的“shell程序”就是

command_from_step_1 | perl_script_from_step_3

中间有一个竖线字符。

答案 2 :(得分:0)

尝试使用shell的'-x'选项运行脚本,看看发生了什么。