小编Car*_*don的帖子

如何将多个结果通过管道传输到一个命令中?

我有一段可以工作的代码,如下所示(请注意,这是用于 AWS 自动部署的 CloudFormation 模板):

EFS_SERVER_IPS_ARRAY=( $(aws efs describe-mount-targets --file-system-id ${SharedFileSystem} | jq '.MountTargets[].IpAddress' -r) )
echo "IPs in EFS_SERVER_IPS_ARRAY:"
for element in "${EFS_SERVER_IPS_ARRAY[@]}"
do
    echo "$element"
    echo "$element $MOUNT_SOURCE" >> /etc/hosts
done
Run Code Online (Sandbox Code Playgroud)

这有效,但看起来很难看。我想避免数组变量和for循环(基本上我不关心第一个 echo 命令)。

我可以以某种方式使用输出($element,它是 1 个或更多,目前是 2 行 IP)并将其汇集到两个执行中,例如:

long AWS command >> echo $element $MOUNT_SOURCE  >> /etc/hosts
Run Code Online (Sandbox Code Playgroud)

在当前的实现中,echo 执行的次数与数组中的变量一样多?我将如何重写这个?

AWS 命令​​的输出是这样的:

10.10.10.10
10.22.22.22
Run Code Online (Sandbox Code Playgroud)

然后,添加的行/etc/hosts如下所示:

10.10.10.10  unique-id.efs.us-east-1.amazonaws.com
10.22.22.22  unique-id.efs.us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

bash shell-script aws bash-expansion bash-array

5
推荐指数
1
解决办法
206
查看次数

标签 统计

aws ×1

bash ×1

bash-array ×1

bash-expansion ×1

shell-script ×1