The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



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 google Shell programmering og Skripting 3 12-05-2002 07:42

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 03-25-2005
yerra yerra is offline
Registrert bruker
  
 

Bli Date: Jan 2005
Innlegg: 13
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 ..
  #2 (permalink)  
Old 03-25-2005
google's Avatar
google google is offline Forum Advisor  
Moderator
  
 

Bli Dato: juli 2002
Beliggenhet: Atlanta
Innlegg: 740
Du kan gjøre det et par måter en - ved å legge en kontrollsum teller for hvert tilfelle. På slutten av getsopts statement og før andre koden kjøres, kontrollerer du om checksum verdi er det som er forventet. Hvis du ikke liker dette, tar du enkelt og vurdere $ #. $ # Holder telling av antall kommandolinje argumenter sendes til skriptet.
  #3 (permalink)  
Old 03-26-2005
yerra yerra is offline
Registrert bruker
  
 

Bli Date: Jan 2005
Innlegg: 13
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?
  #4 (permalink)  
Old 03-26-2005
yerra yerra is offline
Registrert bruker
  
 

Bli Date: Jan 2005
Innlegg: 13
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?
  #5 (permalink)  
Old 03-26-2005
google's Avatar
google google is offline Forum Advisor  
Moderator
  
 

Bli Dato: juli 2002
Beliggenhet: Atlanta
Innlegg: 740
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
  #6 (permalink)  
Old 03-26-2005
yerra yerra is offline
Registrert bruker
  
 

Bli Date: Jan 2005
Innlegg: 13
Jeg var i stand til å gjøre det med $ #. Takk for hjelpen ..
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 12:23.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0