【问题标题】:Bash command with backticks inside of xargs在 xargs 内带有反引号的 Bash 命令
【发布时间】:2015-05-08 22:40:14
【问题描述】:
  echo $TMPLIST | xargs -I{} -n 1 -P $MAXJOBS curl -o {}_$DATESTRING.dump `get-temp-url --location {}`

$TMPLIST 有一个我想要处理的位置列表。 我正在尝试运行与上述类似的东西,但反引号内的括号没有得到扩展。我做错了什么?

【问题讨论】:

  • 为什么要做这么复杂的事情?以更具可读性的方式循环遍历它呢?
  • @fedorqui'SOstopharming' 这种xargs 用法是最简洁的并行处理方式之一(注意-P 参数)。

标签: linux bash xargs


【解决方案1】:

在这个命令中...

echo $TMPLIST | 
xargs -I{} -n 1 -P $MAXJOBS curl -o {}_$DATESTRING.dump \
  `get-temp-url --location {}`

...backtics 由shell 解释xargs 从未见过他们。你可以这样做:

echo $TMPLIST | 
xargs -I{} -n 1 -P $MAXJOBS \
  sh -c 'curl -o {}_$DATESTRING.dump `get-temp-url --location {}`'

请注意,要使其工作,DATESTRING 需要是环境变量,而不是 shell 变量(例如,您需要 export DATESTRING)。

【讨论】:

  • 完美,感谢有关将变量也设为 ENVAR 的警告。
猜你喜欢
  • 2013-07-20
  • 2013-12-05
  • 2017-09-16
  • 2014-01-21
  • 2022-08-12
  • 2017-07-26
  • 2013-09-14
  • 2011-11-17
  • 1970-01-01
相关资源
最近更新 更多