2014-12-04 53 views
0

我想要做一些简单的事情,像使用管道|在Oozie的动作

echo 'my text' | grep my 

在Oozie的外壳行动。

Oozie的似乎不能够处理的|作为参数。

有没有人能够得到一个|内Oozie的工作?

+0

这是否会产生错误?如果是这样,它会说什么? – 2014-12-04 08:07:45

+0

它在|之前执行第一部分并退出。在|的某些组合中和脚本,它说非法的论点。 – bhomass 2014-12-12 18:41:42

回答

0

随着给出的例子,你可以工作在管子这样

grep my <<< 'my text' 

§ Useless use of cat

+0

不寻找如何重写shell脚本的帮助。我尝试了所有不同的方式来自己绕过管道。 oozie根本无法接受任何东西,而不仅仅是一个简单的命令,然后是参数。 – bhomass 2014-12-12 18:40:51

0

我深深凝望Oozie的。它会自动生成一个包装来执行你输入的命令,显然这个包装除了带有参数的简单命令之外不能处理任何东西。

1

你可以在这样的工作流程得到解决Oozie的有限的外壳功能用的包装外壳:

<action name="shell-node-pipe"> 
    <shell xmlns="uri:oozie:shell-action:0.2"> 
    <job-tracker>${jobTracker}</job-tracker> 
    <name-node>${nameNode}</name-node> 
    <exec>bash</exec> 
    <argument>-c</argument> 
    <argument>/bin/echo my test | grep my</argument> 
    <capture-output /> 
    </shell> 
    <ok to="end" /> 
    <error to="fail" /> 
</action> 

这样,庆典的“-c”选项用来调用包含一个管道命令。