替代xargs处理管道

时间:2016-05-03 19:01:15

标签: shell unix curl

我正在尝试运行一个curl命令,该命令需要来自管道的参数

some operation | sort | head -n -2 | curl -s "blah/blah/<argument goes here>/blah"

我无法弄清楚如何一次传递一个参数。我发现的一种方式是

some operation | sort | head -n -2 | xargs -l "$" curl -s "blah/blah/$/blah"

但是我得到了

xargs: $: No such file or directory
这是什么意思?为什么要尝试将$作为文件读取?

1 个答案:

答案 0 :(得分:4)

请参阅BashFAQ #1了解逐行读取字符串的最佳做法:

#!/bin/bash
#      ^^^^ - not /bin/sh, or <() will be a syntax error

while IFS= read -r line; do
  curl -s "blah/blah/$line/blah"
done < <(some operation | sort | head -n -2)