Bash Xargs睡眠(多个命令行参数)



好的,所以我有以下脚本更新Route43 DNS条目。不幸的是,您可以每秒的电话数量有一个限制

我尝试了几件事,例如'{../cli53 blah;睡眠10;}',我似乎无法使它起作用。有人有任何建议吗:

#!/bin/bash
set root='dirname $0'
ec2-describe-instances -O ******* -W ******* --region eu-west-1 |
perl -ne '/^INSTANCEs+(i-S+).*?(S+.amazonaws.com)/
and do { $dns = $2; print "$1 $dnsn" }; /^TAG.+sNames+(S+)/
and print "$1 $dnsn"' |
perl -ane 'print "$F[0] CNAME $F[1] --replacen"' |
grep -v 'i-' | xargs --verbose -n 4 /usr/local/bin/cli53 rrcreate -x 5 contoso.com

编辑:感谢Etan的答案。这是我针对需要它的任何其他人的解决方案:

我必须将-i%变量%切换到XARGS语句ASWEL,以确保将feed作为参数传递给CLI53,但现在看起来都很好。

#!/bin/bash
set root='dirname $0'
ec2-describe-instances -O ******* -W ******* --region eu-west-1 |
perl -ne '/^INSTANCEs+(i-S+).*?(S+.amazonaws.com)/
and do { $dns = $2; print "$1 $dnsn" }; /^TAG.+sNames+(S+)/
and print "$1 $dnsn"' |
perl -ane 'print "$F[0] CNAME $F[1] --replacen"' |
grep -v '^i-' |
xargs --verbose -n 4 -I myvar /bin/sh -c '{ /usr/local/bin/cli53 rrcreate -x 5 contoso.com 'myvar'; sleep 1; printf "nn"; }'

最简单的解决方案就是简单地将cli53sleep调用脚本中,然后使用xargs执行脚本。

如果您不想这样做,则应该能够做自己想做的事情:

... | xargs ... /bin/sh -c '{ /usr/local/bin/cli53 ... "$@"; sleep 10; }' -

相关内容

  • 没有找到相关文章

最新更新