2012-01-20 12 views
1

私は似たような問題への参照を見ましたが、この正確なものは見当たりません。私は4つのステップでシンプルなPentaho Jobを持っています。最初は始まりです。 2番目の変換は、DBクエリ呼び出しを行い、3行を返す変換です。変換が終了する前(変換の最後のステップ)には、「結果に行をコピー」ステップが呼び出されます。私はこれを使って、私の仕事で質問の結果を使うことができると思います。私の3番目のステップ(私の仕事の)は、私が書いたスクリプトを呼び出します。私は両方の "以前の結果をargsにコピーする?" 「入力行ごとに実行しますか?」どちらもチェックされている。私のスクリプトは "/home/myid/echo-me.sh"と呼ばれています。すべてのスクリプトは$ 1をエコーアウトします。私の仕事の最後のステップは「成功」です。"以前の結果をargsにコピーする"のPentahoシェルスクリプト= Yと "すべての入力行に対して実行しますか?" = YはLinuxでパラメータを間違ってエスケープする

スクリプトをコマンドラインから実行すると機能します。コマンド "/home/myid/echo-me.sh helloworld"は、期待どおりに "helloworld"を生成します。しかし、Pentahoは "/ bin/sh/-c /home/myid/echo-me.sh helloworld"のように "/ bin/sh"を介してスクリプトを呼び出すようです。この場合、パラメータはシェルスクリプトに渡されません。私はコマンドラインから手動でこれを実行することでこれを確認しました。 "/ bin/sh/-c '/home/myid/echo-me.sh helloworld'"のようにスクリプト(とパラメータ)の前後に一重引用符を付けるとうまくいきます。

残念ながら、私はPentahoのは同じことを行うために取得する方法を見つけ出すことはできません。 "Script file name"フィールドに引用符を入れると、あらゆる種類の混乱が起こります。

興味深いことに、これは、Windows用の問題ではありません。このように...正しくシェル文字列をエスケープするために表示されます。
CMD.EXE/C「」C:\ MyTestに\エコーme.bat「のhelloworld」

私が間違って何をやっている場合、誰が言うことができます??回避する?

ありがとうございます!

答えて

0

ため息が...私たちは明らかにPentahoののカスタマイズバージョンを持っている、といくつかの馬鹿がここにロジックをオーバーライドし、それを破りました。コアに戻ってしまえば、すべての作品は素晴らしい。何かを考えてくれてありがとう。

関連する問題