![]() |
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí. |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| Uso de getopts | TurboArkhan | Programación de scripts de shell y | 3 | 06-22-2009 04:31 PM |
| Ayuda en getopts | Chella | Programación de scripts de shell y | 4 | 11-02-2007 01:09 AM |
| getopts ayuda | GrepMe | Programación de scripts de shell y | 3 | 06-20-2007 11:47 AM |
| ayudar en getopts | problemas | Programación de scripts de shell y | 1 | 05-04-2006 11:07 PM |
| getopts | Programación de scripts de shell y | 3 | 12-05-2002 07:42 PM | |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
getopts
Tengo un guión que lanza un comando sobre la base de ciertos parámetros. Estoy publicar el código de más abajo ..
Necesidades de las opciones que se dé tal la opción-u, junto con va-d y-s,-f va con-d-y no va con-s y-d. 1) ¿Cómo puedo garantizar que el usuario pierde cualquier opción de la que entonces se le debe. ¿Es más sencillo si luego donde comprobar la longitud de la cadena de todas estas opciones. USO \u003d "Uso:` basename $ 0 »[-s schemaname] [DatabaseName-d] [-u nombre de usuario]-f-t-h" mientras getopts: s: d: u: FTH params hacer $ params en caso s) de SOURCESCHEMA \u003d "$ OPTARG";; f) TOTAL \u003d 'y';; t) CUADRO \u003d 'y';; d) DBNAME \u003d "$ OPTARG";; u) USERNAME \u003d "$ OPTARG";; h) help_doc exit 0 ;; | echo "Opción especificado no válido" echo "$ USO" 1> & 2, salida 1 ;; esac hecho Gracias .. |
|
||||
|
He añadido esta línea al final de la secuencia de comandos (después de getopts), tal vez el enfoque es un error ..
if [$ #-eq "3"] y, a continuación, "Opción 1 especifica-s-d-u" elif [$ #-eq "2"] y, a continuación, "Opción 2 especifica-d y-f" fi Sin embargo siempre $ # 6 si se evalúa a ofrecer la opción DatabaseName scriptname-d-u usuario-s schemaname. ¿Cómo llegar a las 6? |
|
||||
|
Creo que tengo ahora.
Si i proporcionar scriptname-s esquema-u usuario-d base de datos, $ # evalúa a 6 sobre la base de ninguna de las opciones y sus valores. (-s esquema) 2, (-u usuario) 2 y (d base de datos) 2. Así que si es la base de datos-d-f evalúa a 3 (-d base de datos) 2 y (-f) 1. Si se especifica-d-t y la base de datos (que también evalúa a 3). ¿Cómo puedo comprobar si se ha especificado-t o-f entonces? |
|
|||||
|
I didnt esta prueba en absoluto, sólo un pensamiento que tuve. Im seguro de que hay un millón de maneras de hacer esto.
Código:
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
|
|
||||
|
Tuve la oportunidad de hacerlo con los $ #. Gracias por la ayuda ..
|
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|