![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 | Programmeren en Shell Scripting | 3 | 12-05-2002 07:42 PM | |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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 .. |
|
||||
|
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? |
|
||||
|
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? |
|
|||||
|
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
|
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|