簡體   English   中英

Bash Xargs Sleep(多命令行參數)

[英]Bash Xargs Sleep (Multiple Command Line Arguments)

好的,我有以下腳本更新Route43 DNS條目。 不幸的是,你可以制作的每秒調用次數有限,因此我需要讓最終的Xargs命令在每次迭代之間休眠大約一秒鍾。

我嘗試了幾件事,比如'{../cli53 blah; 睡10 我似乎無法讓它發揮作用。 有沒有人有任何建議請:

#!/bin/bash

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

編輯:感謝Etan的答案。 以下是我需要它的其他人的解決方案:

我必須將-I%變量%開關包含到xargs語句aswel中,以確保將輸入作為參數傳遞給cli53,但現在它們看起來都很好用了。

#!/bin/bash

set root='dirname $0'
ec2-describe-instances -O ******* -W ******* --region eu-west-1 |
perl -ne '/^INSTANCE\s+(i-\S+).*?(\S+\.amazonaws\.com)/
and do { $dns = $2; print "$1 $dns\n" }; /^TAG.+\sName\s+(\S+)/
and print "$1 $dns\n"' |
perl -ane 'print "$F[0] CNAME $F[1] --replace\n"' |
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 "\n\n"; }'

最簡單的解決方案是簡單地將cli53sleep調用放在腳本中並使用xargs來執行腳本。

如果你不想這樣做,你應該能夠做你想做的事情:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM