Pentaho shell脚本“将以前的结果复制到args?” = Y和“每个输入行都执行?” = Y在Linux中错误地转义参数

时间:2012-01-20 17:00:19

标签: pentaho kettle

我见过类似问题的引用,但不是这个问题。我有一个简单的Pentaho工作,有四个步骤。第一个是开始。第二个是转换,它进行数据库查询调用并返回3行。在转换结束之前(转换的最后一步),它调用“将行复制到结果”步骤。我想通过使用它,我可以在我的Job中使用查询的结果。我的第三步(我的工作)调用我写的脚本。我有“将之前的结果复制到args?”和“为每个输入行执行?”两个都检查过我的脚本名为“/home/myid/echo-me.sh”。所有脚本都回显$ 1。我工作的最后一步是“成功”。

如果我从命令行运行我的脚本,它可以工作。命令:“/ home / myid / echo-me.sh helloworld”按预期产生“helloworld”。然而,Pentaho似乎通过“/ bin / sh”调用脚本,如“/ bin / sh / -c /home/myid/echo-me.sh helloworld”。在这种情况下,该参数不会传递给我的shell脚本。我通过从命令行手动运行它来确认这一点。如果我在我的脚本(和参数)周围添加单引号,如下所示:“/ bin / sh / -c'/ home / myid / echo-me.sh helloworld'”,它可以正常工作。

不幸的是,我无法弄清楚如何让Pentaho做同样的事情。在“脚本文件名”字段中放置引号会导致各种破坏。

有趣的是,这似乎不是Windows的问题。它似乎正确地逃脱了shell字符串...像这样:
cmd.exe / C“”c:\ mytest \ echo-me.bat“helloworld”

有人能说出我做错了什么吗?解决?

谢谢!

1 个答案:

答案 0 :(得分:0)

叹息......所以我们显然有一个定制版本的Pentaho,而且一些白痴在这里超越了逻辑而打破了它。一旦我恢复核心,一切都很棒。谢谢你的任何考虑。