我看到了对类似问题的引用,但不是这个确切的问题。我有一个简单的 Pentaho Job,有四个步骤。第一个是开始。第二个是转换,它进行数据库查询调用并返回 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"
谁能告诉我是否做错了什么?解决问题?
谢谢!