在Pig身上,这个怎么在壳里传递
{20160218,20160219,20160220,20160221,20160222,20160223,20160224}
外壳代码如下:
pig -f cart_abandonment.pig -param input='{20160218..20160224}'
使用扩展函数?上述方法不起作用,因为单引号省略了扩展。
如果没有单引号,似乎只有20160218通过。Pig的脚本如下:
list = load '/inserteddate={$input}'
USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') as cartjson:map[];
1条答案
按热度按时间pu82cl6c1#
尝试双引号命令替换(
$(...)
):正如您所发现的,大括号展开只有在未加引号的情况下才有效。
但是,为了传递它生成的所有数字作为option参数的一部分
input=
,数字列表必须双引号。这是通过使用命令替换来实现的(
$(...)
)生成双引号的数字列表(并将其回显到stdout,由命令替换捕获),以便shell将其输出视为单个字,以便input=num1 num2 ...
形成单个选项参数。pig
在这种情况下需要逗号分隔的值,而大括号扩展传递给echo
结果是以空格分隔的值,因此需要将空格转换为逗号tr ' ' ','
.