首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell展开将参数传递到字符串中。

使用shell展开将参数传递到字符串中。
EN

Stack Overflow用户
提问于 2016-03-02 22:26:57
回答 1查看 454关注 0票数 1

在猪身上,如何在壳中传递这个?

代码语言:javascript
复制
{20160218,20160219,20160220,20160221,20160222,20160223,20160224}

根据shell代码,如下:

代码语言:javascript
复制
pig -f cart_abandonment.pig -param input='{20160218..20160224}'

使用扩展函数?由于单引号省略了扩展,所以上面的内容不起作用。

没有单引号,似乎只有20160218被通过。猪脚本如下:

代码语言:javascript
复制
list = load '/inserteddate={$input}' 
    USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') as cartjson:map[];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-02 22:36:28

尝试使用双引号命令替换($(...)):

代码语言:javascript
复制
pig -f cart_abandonment.pig -param input="$(echo {20160218..20160224} | tr ' ' ',')"
  • 正如您所发现的,只有在未引用的情况下才能使用支撑展开
  • 但是,为了将它生成的所有数字作为选项参数input=的一部分传递,数字列表必须是双引号。
  • 这是通过使用命令替换 ($(...))来生成数字列表(并将其回显到stdout,命令替换捕获)来实现的,这个列表是双引号的,因此它的输出由shell作为一个单词处理,因此input=num1 num2 ...形成了一个单一的选项-参数。
  • 在这种情况下,pig需要用逗号分隔的值,而传递给echo的大括号扩展会产生空格分隔的值,因此需要用tr ' ' ','将空格转换为逗号。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35759429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档