![]() |
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.
|
|
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 |
| Bruke getopts | TurboArkhan | Shell programmering og Skripting | 3 | 06-22-2009 05:31 |
| Hjelp i getopts | chella | Shell programmering og Skripting | 4 | 11-02-2007 01:09 |
| getopts hjelp | GrepMe | Shell programmering og Skripting | 3 | 06-20-2007 12:47 |
| hjelp i getopts | problemer | Shell programmering og Skripting | 1 | 05-05-2006 12:07 |
| getopts | Shell programmering og Skripting | 3 | 12-05-2002 07:42 | |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
getopts
Jeg har et script som fires en kommando basert på visse parametre. Jeg legger inn koden nedenfor ..
Valgene må bli gitt slik at -u alternativet går langs med-d og-s,-f går med-d og-t går med-s og-d. 1) Hvordan kan jeg sikre at brukeren savner noen av valget da han skulle bli spurt. Er det enkelt hvis deretter annet der jeg sjekke lengden på strengen av alle disse valgene. BRUK \u003d "Bruk:` basename $ 0 `[-s schemaname] [-d databasename] [-u brukernavn]-f-t-h" mens getopts: s: D: u: fth params gjøre case $ params i s) SOURCESCHEMA \u003d "$ OPTARG";; f) FULL \u003d "y";; t) TABLE \u003d "y";; d) dbname \u003d "$ OPTARG";; u) USERNAME \u003d "$ OPTARG";; h) help_doc exit 0 ;; | echo "Ugyldig alternativ Spesifiserte" echo "$ BRUK" 1> & 2; exit 1 ;; esac ferdig Takk .. |
|
||||
|
Jeg har lagt til denne linjen i slutten av manuset (etter getopts), kanskje den tilnærmingen er feil ..
Hvis [$ #-eq "3"]; deretter "Alternativ 1 spesifisert-s-d-u" elif [$ #-eq "2"]; deretter "Alternativ 2 spesifisert-d og-f" fi Men $ # alltid evaluerer til 6 hvis gi mulighet scriptname-d databasename-u username-s schemaname. Hvordan gikk det kommer til 6? |
|
||||
|
Jeg tror jeg har det nå.
Hvis jeg gir scriptname-s skjema-u bruker-d database, $ # evaluerer til 6 basert på ingen alternativer og dens verdier. (-r-skjema) 2, (-u bruker) 2 og (d database) 2. Så hvis det er-d database-f det evaluerer til 3 (-d database) 2 og (-f) 1. Hvis han spesifiserer-d database og-T (det også evaluerer til 3). Hvordan kan jeg sjekke om han har oppgitt-t eller-f da? |
|
|||||
|
Jeg gjorde ikke teste dette i det hele tatt, bare en tanke jeg hadde. Im at det er en million måter å gjøre dette.
Code:
USAGE="Usage: `basename $0` [-s schemaname] [-d databasename] [-u username] -f -t -h"
while getopts :s:d:u:fth params
do
case $params in
s) SOURCESCHEMA="$OPTARG"
let COUNT= $COUNT+10000
;;
f) FULL='y'
;;
t) TABLE='y'
;;
d) DBNAME="$OPTARG"
let COUNT= $COUNT+1
;;
u) USERNAME="$OPTARG"
let COUNT= $COUNT+1000
;;
h)
help_doc
exit 0
;;
?)
echo "Invalid Option Specified"
echo "$USAGE" 1>&2 ; exit 1
;;
esac
if [ "$COUNT" -ne 10101 ]
then
help_doc
exit 0
elif [ ! -z $FULL ]
then
echo "Paramater FULL is Set"
elif [ ! -z $TABLE ]
then
echo "Paramater TABLE is Set"
else
echo "Neither TABLE or FULL Are Set"
fi
|
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|