繁体   English   中英

xargs 不会从 aws cli 输出中拆分空白

[英]xargs not splitting on whitespace from aws cli output

此命令返回由空格分隔的所有 AWS 区域:

aws ec2 describe-regions --query 'Regions[*].RegionName' --output text

eu-north-1  ap-south-1  eu-west-3   eu-west-2   eu-west-1   ap-northeast-2  ap-northeast-1  sa-east-1   ca-central-1    ap-southeast-1  ap-southeast-2  eu-central-1    us-east-1   us-east-2   us-west-1   us-west-2

我正在尝试将其通过管道传输到 xargs,但它会将其视为单个字符串:

aws ec2 describe-regions --query 'Regions[*].RegionName' --output text | gxargs -I {} aws cloudformation list-stacks --region {}

Invalid endpoint: https://cloudformation.eu-north-1 ap-south-1  eu-west-3   eu-west-2   eu-west-1   ap-northeast-2  ap-northeast-1  sa-east-1   ca-central-1    ap-southeast-1  ap-southeast-2  eu-central-1    us-east-1   us-east-2   us-west-1   us-west-2.amazonaws.com
gxargs: aws: exited with status 255; aborting

gxargs 只是 gnu xargs (我在 Mac 上)。

此外,尝试使用 jmespath 从具有特定分隔符的数组创建字符串(我可以与 xargs 一起使用):

aws ec2 describe-regions --query 'Regions[*].join(",",@.RegionName)'
In function join(), invalid type for value: None, expected one of: ['string'], received: "null"

编辑:只是跟进,这就是我的结局。 它坚持在找不到堆栈时抛出错误 - 对于其他 aws cli 命令可能相同

aws ec2 describe-regions --query 'Regions[*].RegionName' --output text | gxargs -n 1 sh -c 'aws cloudformation describe-stacks --stack-name findme --region $0 || true'

这是-Iman xargs

-I replace-str
用从标准输入读取的名称替换初始参数中出现的 replace-str。 此外,未加引号的空格不会终止输入项 相反,分隔符是换行符。 意味着 -x 和 -L 1。

您可以使用xargs -n 1 aws cloudformation list-stacks --region代替

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM