我有一段可以工作的代码,如下所示(请注意,这是用于 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)