![]() |
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| bash - retarder l'expansion de la variable | scandora | De programmation et de script Shell | 3 | 02-18-2009 05:59 AM |
| globbing, $ # est trop élevé après wildcard expansion dans script bash | zoo591 | De programmation et de script Shell | 3 | 07-25-2008 03:50 AM |
| Pattern expansion problème | njoshi | De programmation et de script Shell | 5 | 04-24-2007 01:28 PM |
| AIX Expansion CD | almuwatta | AIX | 0 | 06-23-2005 06:07 PM |
| ksh sous HP-UX - variable expansion | dangral | UNIX pour les nuls Questions et réponses | 4 | 02-08-2005 12:35 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Brace expansion problème de Bash
J'ai un script qui prend une option pour les piscines de serveur pour exécuter le script contre. La possibilité est donnée comme une liste séparée par une virgule (c'est-à-dire, p-201.204.301). J'utilise eval brace expansion et d'obtenir les numéros de la piscine dans un tableau. Cela fonctionne très bien, sauf si seulement 1 piscine numéro est donné. Voici le code: Code:
while [ "$1" != "" ]; do
case $1 in
-p ) shift
pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
;;
Si plusieurs piscines donnée: Code:
[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
+ '[' '' '!=' '' ']'
Si pool unique donnée: Code:
[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
+ '[' '' '!=' '' ']'
Ainsi, si un pool unique est donné, il laisse les accolades autour d'elle qui est mauvais. Je pourrais faire un test de $ 1 pour voir si il ya des virgules et des processus différents, il n'y a pas si, mais je me demandais s'il ya une meilleure solution que cela. Aussi demande si je traitées obtenir les numéros de la piscine dans un tableau a été la meilleure façon de le faire (eval et brace expansion). Merci, Mike G. |
|
||||
|
Citation:
Pour l'instant, j'ai résolu mon problème de cette façon: Code:
while [ "$1" != "" ]; do
case $1 in
-p ) shift
case $1 in
*,* ) pools=( $(for i in $(eval echo {$1}); do echo $i; done | sort) ) ;;
* ) pools=$1 ;;
esac
;;
|
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|