Bash 为什么在这个语句中使用xargs

Bash 为什么在这个语句中使用xargs,bash,xargs,Bash,Xargs,我正在与使用以下语法调用的AWS CLI命令交互: aws configure set varname value 我遇到了以下脚本: aws configure set environment $(echo $ENV | xargs) 我知道这是将环境varname设置为$ENV的输出 为什么echo命令将其输出传输到xargs?我已经阅读了手册页,但我不明白它在做什么。xargs,正如您从手册中了解的那样,构造参数列表并执行实用程序 在这里,它将把echo$ENV的输出格式化为参数列表,

我正在与使用以下语法调用的AWS CLI命令交互:

aws configure set varname value
我遇到了以下脚本:

aws configure set environment $(echo $ENV | xargs)
我知道这是将
环境
varname
设置为
$ENV
的输出


为什么
echo
命令将其输出传输到
xargs
?我已经阅读了手册页,但我不明白它在做什么。

xargs,正如您从手册
中了解的那样,构造参数列表并执行实用程序

在这里,它将把echo$ENV的输出格式化为参数列表,而不是行,以演示如何在Linux机器上尝试这些命令

env | xargs
输出的格式如下

rvm_script_name= rvm_sdk= rvm_silent_flag= rvm_sticky_flag= rvm_system_flag= rvm_use_flag= rvm_user_flag= rvm_ruby_string=ruby-2.3.0 _=/usr/bin/env
rvm_system_flag=
rvm_use_flag=
rvm_user_flag=
rvm_ruby_string=ruby-2.3.0
_=/usr/bin/env
然后试试看

env
输出将如下所示

rvm_script_name= rvm_sdk= rvm_silent_flag= rvm_sticky_flag= rvm_system_flag= rvm_use_flag= rvm_user_flag= rvm_ruby_string=ruby-2.3.0 _=/usr/bin/env
rvm_system_flag=
rvm_use_flag=
rvm_user_flag=
rvm_ruby_string=ruby-2.3.0
_=/usr/bin/env

因此,它通过删除新行来准备命令
echo$ENV
的输出,使其作为参数列表有效。

@JasonStrimpel:
ENV
的内容是什么?
$ENV
是一个类似于
staging
@anubhava的字符串很可能是的,但这里不需要这不是我的codexargs。错误:它也可以在没有xargs的情况下工作,因为LF也是一个有效的单词分隔符。使用
echo$(printf“a\nb\nc\n”| xargs)
echo$(printf“a\nb\nc\n”)
测试它。可能对于这种特定情况,它是有效的,但它毕竟是xargs的一种用法,并且可能是编写命令的人用于将xargs用于此类情况