3

我想编写一个将过滤条件作为命令行参数的猪脚本。从命令行我想输入如下内容:

pig -p "MY_FILTER=field1 == 0 and field2 == 5" myscript.pig

在我的脚本中,我有一行:

my_filtered_data = filter my_data by $MY_FILTER;

MY_FILTER当没有空格并且我在值周围传递引号时,这可以按预期工作;因此,如果我MY_FILTER=\"field1==0\"在命令行键入,shell 将传递带有值的引号,而 pig 会执行我想要的扩展。但是,如果我提供它,参数将无法扩展MY_FILTER=\"field1 == 0\"

我尝试了许多不同的引用技术,甚至尝试直接从 python 的 subprocess 模块运行命令,以确保我的 shell 没有做一些奇怪的事情。

4

1 回答 1

2

你用的是哪个版本的猪?我使用 0.9.2,以下命令适用于我:

 pig -p "F='field1 == 3 AND field2 == 5'" test.pig

但它不适用于 0.8.1。

于 2012-09-20T16:00:36.560 回答