Ho uno script che prende un'opzione per piscine server per eseguire lo script contro. L'opzione è data come un elenco separato da virgole (ad esempio,-p 201.204.301).
Sto utilizzando le parentesi graffe e eval espansione piscina per ottenere tali numeri in un array. E se non funziona bene solo l'1 piscina numero è dato. Ecco il codice:
Codice:
while [ "$1" != "" ]; do
case $1 in
-p ) shift
pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
;;
Se più di piscine:
Codice:
[me@server bin]$ ./project_nunenhoffen.sh -p 201,202
+ '[' -p '!=' '' ']'
+ case $1 in
+ shift
+ pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
++ sort
+++ eval echo '{201,202}'
++++ echo 201 202
++ for i in '$(eval echo {$1})'
++ echo 201
++ for i in '$(eval echo {$1})'
++ echo 202
+ shift
+ '[' '' '!=' '' ']'
Se unico dato:
Codice:
[me@server bin]$ ./project_nunenhoffen.sh -p 201
+ '[' -p '!=' '' ']'
+ case $1 in
+ shift
+ pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
++ sort
+++ eval echo '{201}'
++++ echo '{201}'
++ for i in '$(eval echo {$1})'
++ echo '{201}'
+ shift
+ '[' '' '!=' '' ']'
Quindi, se un unico pool è dato lascia la parentesi intorno ad esso che è male. Ho potuto fare un test di $ 1 per vedere se ci sono eventuali virgole e di processo è diverso se non ci sono, ma mi chiedevo se c'è una soluzione migliore di quello. Inoltre chiedo se come ho gestito la piscina ottenere numeri in un array è stato il modo migliore per farlo (eval espansione e le parentesi graffe).
Grazie,
Mike G.