12

如何将全局脚本变量传递给 xargs 的命令?我试过这样:

TEST=hallo2
echo "hallo" | xargs sh -c 'echo passed=$1 test=$TEST' sh

输出:

passed=hallo test=

我知道我可以使用{}令牌,但我需要这样做!

我正在使用bash.

4

3 回答 3

11

$TEST从引号中取出变量:

 TEST=hallo2
 echo "hallo" | xargs sh -c 'echo passed=$1 test='$TEST sh
于 2013-03-15T11:20:16.530 回答
11

作为@chepner 建议的答案添加。

export变量TEST

export TEST=hallo2
echo "hallo" | xargs sh -c 'echo passed=$1 test="$TEST"' sh
于 2013-03-15T13:54:32.400 回答
-6

使用 GNU Parallel,您可以避免一些引用:

TEST=hallo2
echo "hallo" | parallel echo passed={} test=$TEST

GNU Parallel 作为大多数发行版的包存在,建议使用普通包管理器进行安装。但是如果您的系统没有软件包,安装 GNU Parallel 仍然需要 10 秒。

观看介绍视频以了解更多信息:https ://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

于 2013-04-19T22:33:54.307 回答