The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Met behulp van getopts TurboArkhan Programmeren en Shell Scripting 3 06-22-2009 05:31 PM
Hulp in getopts Chella Programmeren en Shell Scripting 4 11-02-2007 01:09
getopts helpen GrepMe Programmeren en Shell Scripting 3 06-20-2007 12:47
hulp bij getopts problemen Programmeren en Shell Scripting 1 05-05-2006 12:07 AM
getopts google Programmeren en Shell Scripting 3 12-05-2002 07:42 PM

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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-25-2005
yerra yerra is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2005
Posts: 13
getopts

Ik heb een script dat branden een opdracht op basis van bepaalde parameters. Ik ben terbeschikkingstelling de onderstaande code ..

De opties moeten worden gegeven, zodat
-u gaat samen met de optie-d en-s,-f gaat met-d en-t gaat met-s en-d.
1) Hoe kan ik ervoor zorgen dat de gebruiker mist een van de optie dan moet hij worden gevraagd. Is het eenvoudig zo anders dan waar ik de lengte van de string van al deze opties.

USAGE \u003d "Usage:` basename $ 0 "[-s schemaname] [-d databasename] [-u gebruikersnaam]-f-t-h"
terwijl getopts: s: d: u: fth params
doen
case $ params in

s) SOURCESCHEMA \u003d "$ OPTARG";

f), VOL \u003d 'y';

t) TABEL \u003d 'y';

d) dbname \u003d "$ OPTARG";

u) USERNAME \u003d "$ OPTARG";

h)
help_doc
exit 0
;;

? |
echo "Ongeldige Optie Specified"
echo "$ USAGE" 1> & 2; afrit 1
;;

esac

gedaan


Bedankt ..
  #2 (permalink)  
Old 03-25-2005
google's Avatar
google google is offline Forum Advisor  
Moderator
  
 

Join Date: juli 2002
Locatie: Atlanta
Posts: 740
Je kan dit doen een paar manieren, een - door de toevoeging van een controlesom tellen van elke zaak. Aan het einde van de getsopts verklaring en voor een andere code wordt uitgevoerd, controleert u of de checksum waarde is wat wordt verwacht. Als u dont like deze aanpak, neemt u de gemakkelijke manier en evalueren $ #. $ # Houdt een telling van het aantal command-line argumenten uit het script.
  #3 (permalink)  
Old 03-26-2005
yerra yerra is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2005
Posts: 13
Ik toegevoegd deze lijn aan het eind van het script (na getopts), misschien wel de aanpak is verkeerd ..

if [$ #-eq "3"]; vervolgens
"Optie 1 gespecificeerde-s-d-u"
elif [$ #-eq "2"], vandaar
"Optie 2 gespecificeerde-d en-f"
fi

Echter $ # altijd evalueert tot 6 als de optie
Scriptnaam-d databasename-u gebruikersnaam-s schemaname. Hoe is het komen tot 6?
  #4 (permalink)  
Old 03-26-2005
yerra yerra is offline
Geregistreerde gebruiker
  
 

Join Date: Jan 2005
Posts: 13
Ik denk dat ik heb het nu.
Als ik Scriptnaam-s-schema-u user-d-database, $ # evalueert tot 6 gebaseerd op geen van de opties en haar waarden. (-s-schema) 2, (-u user) 2 en (d database) 2.

Dus zo is het database-d-f zij evalueert tot 3 (-d-database) 2 en (-f) 1.
Als hij specificeert-d-database en-t (Ook evalueert naar 3).

Hoe kan ik controleren of hij heeft gespecificeerd-t of-f dan?
  #5 (permalink)  
Old 03-26-2005
google's Avatar
google google is offline Forum Advisor  
Moderator
  
 

Join Date: juli 2002
Locatie: Atlanta
Posts: 740
I didnt dit testen op alle, op slechts een gedachte die ik had. Im ervoor dat er een miljoen manieren om dit te doen.

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
Geregistreerde gebruiker
  
 

Join Date: Jan 2005
Posts: 13
Ik was in staat om het te doen met de $ #. Bedankt voor de hulp ..
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 11:06 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0