The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
bash - ritardo di espansione di variabile scandora Shell scripting e di programmazione 3 02-18-2009 05:59 AM
globbing, $ # è troppo alto dopo jolly espansione script bash zoo591 Shell scripting e di programmazione 3 07-25-2008 03:50 AM
Pattern espansione problema njoshi Shell scripting e di programmazione 5 04-24-2007 01:28 PM
AIX espansione CD almuwatta AIX 0 06-23-2005 06:07 PM
ksh su HP-UX - variabile di espansione dangral UNIX for Dummies Domande & Risposte 4 02-08-2005 12:35 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 07-02-2009
mglenney mglenney is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2009
Interventi: 85
Brace espansione problema in Bash

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.
 

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 06:31 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0