2014-12-03 269 views
1

有人建議我用這些命令得到的OpenStack關機情況下的列表,並送他們到啓動命令的參數命令:xargs的使用具有多個參數

nova list | grep SHUTOFF | cut '-d|' -f3 | xargs nova start 

但它會導致錯誤:

error: unrecognized arguments: shutdowninstance-2 

如果我用xargs的其他命令的列表中正確的是:

nova list | grep SHUTOFF | cut '-d|' -f3 | xargs echo 
shutdowninstance-1 shutdowninstances-2 

所以第一個COM mands一定是好的,問題應該在命令的最後部分。 我想這是因爲最後一個命令的參數是start。 Nova預期的語法是nova start nameofinstance

我研究了許多關於在這裏使用Xargs的其他問題,但無法找到解決方案。

應如何更改命令以使其正常工作?

編輯:使用xargs -t給出了這樣的輸出:

nova start shutdowninstance-1 shutdowninstances-2 

所以問題可能是nova start當時只接受一個實例名稱。

可以調整給我的命令,只給出一個參數嗎?

+0

我覺得有東西在你的問題不適合。 'tenant-test2'從哪裏來?當你使用'echo'時,不顯示'tenant-test2'。 – Jdamian 2014-12-03 09:12:01

+0

修復了問題中的粘貼錯誤。 – 2014-12-03 09:13:26

+0

請使用'xargs -t'來查看真正啓動的'nova'命令。 – Jdamian 2014-12-03 09:13:44

回答

2

可以使用-I選項xargs

nova list | grep SHUTOFF | cut '-d|' -f3 | xargs -I '{}' bash -c 'nova start {}' 

另外,您也可以遍歷結果:

for i in $(nova list | grep SHUTOFF | cut '-d|' -f3); do nova start $i; done 
+1

或者只是'xargs -n 1'來一次限制一個參數。 '-I'也暗示了這一點。你在這裏不需要'bash -c'包裝器; ...'| xargs -i nova s​​tart {}'很好。 – tripleee 2014-12-03 10:07:25