![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| bash - forsinke utvidelsen av variable | scandora | Shell programmering og Skripting | 3 | 02-18-2009 05:59 |
| globbing, $ # er for høy etter jokertegn ekspansjon i bash script | zoo591 | Shell programmering og Skripting | 3 | 07-25-2008 03:50 |
| Mønster utvidelse problem | njoshi | Shell programmering og Skripting | 5 | 04-24-2007 01:28 |
| AIX Utvidelse CD | almuwatta | AIX | 0 | 06-23-2005 06:07 |
| ksh på HP-UX - variable utvidelse | dangral | UNIX for Dummies Spørsmål og svar | 4 | 02-08-2005 12:35 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Brace utvidelse problem Bash
Jeg har et script som tar et valg for server pools å kjøre skriptet mot. Alternativet er gitt som en kommadelt liste (dvs.-p 201.204.301). Jeg bruker eval og spenne utvidelse for å få dem pool tallene inn i en matrise. Det fungerer fint med mindre bare 1 pool er gitt. Her er koden: Code:
while [ "$1" != "" ]; do
case $1 in
-p ) shift
pools=($(for i in $(eval echo {$1}); do echo $i; done | sort))
;;
Hvis flere bassenger gitt: 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
+ '[' '' '!=' '' ']'
Hvis én pool gitt: 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
+ '[' '' '!=' '' ']'
Så hvis ett basseng er gitt det forlater klammeparenteser rundt det som er dårlig. Jeg kunne gjøre en test av $ 1 for å se om det er noen komma og behandle den annerledes hvis det ikke, men jeg lurte på om det er en bedre løsning enn det. Også lurer på om hvordan jeg behandlet får pool tall i en matrise var den beste måten å gjøre det (eval & spenne utvidelse). Takk, Mike G. |
|
||||
|
Sitat:
For nå har jeg løst problemet mitt på denne måten: 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
;;
|
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|