【发布时间】:2019-03-22 14:47:09
【问题描述】:
我正在尝试在 xargs 中执行多个命令。我在这里看到的问题是管道值“%”仅传递给 xargs 内的第一个子命令,而不是第二个子命令。通过交换命令位置验证了相同的结果,但仍然总是第二个命令永远不会获得 '%' 所需的值
Command-1
aws ec2 describe-instances --query 'Reservations[].Instances[?(LaunchTime>=`2015-01-01` && LaunchTime<=`2015-02-28`)][].{id: InstanceId, launched: LaunchTime}' | jq --raw-output '.[] | .id' | xargs -n 1 -I % sh -c 'aws cloudwatch get-metric-statistics --metric-name NetworkPacketsIn --start-time 2018-01-01T00:00:00Z --end-time 2018-02-28T23:59:59Z --period 2592000 --namespace AWS/EC2 --statistics Maximum --dimensions Name=InstanceId,Value=%; echo instance: %;'
输出:
{
"Label": "NetworkPacketsIn",
"Datapoints": []
}
instance: %
{
"Label": "NetworkPacketsIn",
"Datapoints": []
}
instance: %
Command-2
aws ec2 describe-instances --query 'Reservations[].Instances[?(LaunchTime>=`2015-01-01` && LaunchTime<=`2015-02-28`)][].{id: InstanceId, launched: LaunchTime}' | jq --raw-output '.[] | .id' | xargs -n 1 -I % sh -c 'echo instance: %; aws cloudwatch get-metric-statistics --metric-name NetworkPacketsIn --start-time 2018-01-01T00:00:00Z --end-time 2018-02-28T23:59:59Z --period 86400 --namespace AWS/EC2 --statistics Maximum --dimensions Name=InstanceId,Value=%;'
输出
instance: i-3e4fab33
{
"Label": "NetworkPacketsIn",
"Datapoints": []
}
instance: i-c2abbac8
{
"Label": "NetworkPacketsIn",
"Datapoints": []
}
【问题讨论】: