Thread View: es.comp.os.linux.programacion
3 messages
3 total messages
Started by Olaf "El BLanco"
Thu, 15 Dec 2005 10:49
BASH
Author: Olaf "El BLanco"
Date: Thu, 15 Dec 2005 10:49
Date: Thu, 15 Dec 2005 10:49
36 lines
1890 bytes
1890 bytes
Mi idea es que en todos los comandos que haga primero verificar si los
parametros, en el caso de que sean archivos existen, tambien deberia
verificar si se ha ingresado el nro correcto de parametros.
andres@linux:~/scripts> cat allper
#!/bin/bash
if [ ls $1 2>/dev/null ] ; then
echo -e "El archivo o directorio NO existe \n"
fi
Mi razonamiento:
Si la salida de error produjo algo (obviamente un mensaje de error),
aunque no lo vea en la salida estándar la condición del if tiene que ser
verdadera (cero) [[[porque es verdadera si y solo si se "produce algo"
verdad?]] y si es verdadera que me diga que no existe.
Otro ejemplo:
#!/bin/bash
ls $1 2>/dev/null 1>&2
Hago un ls para ver si el archivo existe.
Me fijo en que quedo la variable $?
if [ $? ] ; then
echo existe
else
echo no existe
Estoy con la basico. No quiero adentrarme (todavia) en profundidad, pero me
gustaria saber si algo existe o no.
Saludos
Re: BASH
Author: Oscar Garcia
Date: Thu, 15 Dec 2005 12:14
Date: Thu, 15 Dec 2005 12:14
82 lines
3248 bytes
3248 bytes
El Thu, 15 Dec 2005 11:49:42 +0100, "Olaf \"El BLanco\"" <winter@yahoo.co.uk> escribi�: >Mi idea es que en todos los comandos que haga primero verificar si los >parametros, en el caso de que sean archivos existen, tambien deberia >verificar si se ha ingresado el nro correcto de parametros. Si miras en el manual de bash ver�s: # Expands to the number of positional parameters in decimal. Es decir, con $# tienes el n�mero de par�metros que se han pasado a tu script. >andres@linux:~/scripts> cat allper >#!/bin/bash >if [ ls $1 2>/dev/null ] ; then > echo -e "El archivo o directorio NO existe \n" >fi Puf... �No ser�a mejor usar...? -d file True if file exists and is a directory. -f file True if file exists and is a regular file. -e file True if file exists. Es decir, te bastar�a con un simple: if [ -e $1 ]... >Mi razonamiento: >Si la salida de error produjo algo (obviamente un mensaje de error), >aunque no lo vea en la salida est�ndar la condici�n del if tiene que ser >verdadera (cero) [[[porque es verdadera si y solo si se "produce algo" >verdad?]] y si es verdadera que me diga que no existe. Mi razonamiento, a�n no te has leido el manual de bash, �verdad?. >Otro ejemplo: >#!/bin/bash >ls $1 2>/dev/null 1>&2 > >Hago un ls para ver si el archivo existe. >Me fijo en que quedo la variable $? > >if [ $? ] ; then > echo existe >else > echo no existe Hombre, quiz� querr�as decir: if [ "$?" != "0" ] ... O bien if [ $? -ne 0 ] ... Del manual: arg1 OP arg2 OP is one of -eq, -ne, -lt, -le, -gt, or -ge. These arithmetic binary operators return true if arg1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to arg2, respectively. Arg1 and arg2 may be positive or negative integers. Y... string1 != string2 True if the strings are not equal. >Estoy con la basico. No quiero adentrarme (todavia) en profundidad, pero me >gustaria saber si algo existe o no. Nada, seguro que si miraras el manual de las cosas un poco m�s amenudo encontrar�as las respuestas a todo lo que buscas :) Un saludo. -- �scar Javier Garc�a Baudet LinaresDigital http://redstar.linaresdigital.com/
Re: BASH
Author: Gonzalo Pérez de Olaguer Córdoba
Date: Thu, 15 Dec 2005 14:06
Date: Thu, 15 Dec 2005 14:06
53 lines
3013 bytes
3013 bytes
Hola "Olaf \"El BLanco\"" <winter@yahoo.co.uk> el Thu, 15 Dec 2005 11:49:42 +0100 escribiste: > > Mi idea es que en todos los comandos que haga primero verificar si los > parametros, en el caso de que sean archivos existen, tambien deberia > verificar si se ha ingresado el nro correcto de parametros. Idea totalitaria difícil de sacarse de encima, ésta de querer controlarlo todo. Así en general yo te diría: - primero asegúrate de que el programa funciona correctamente cuando se le pasan los parámetros correctos. O sea, que lo que el programa ha de hacer, lo haga bien. - comprueba sólo aquellas situaciones que, en caso de producirse, provocarían un error *muy grave* de funcionamiento (agujeros de seguridad, cuelgues, corrupción de datos). Aquí no se trata de defender al usuario de sí mismo, sino de defender al programa del usuario. - para el resto de casos (defender al usuario de sí mismo) cuanto más abierto lo dejes mejor. La calidad de un programa se mide por el número de líneas que no contiene :-) > #!/bin/bash > if [ ls $1 2>/dev/null ] ; then > echo -e "El archivo o directorio NO existe \n" > fi Ese error YA lo producen las funciones de la librería C cuando hace falta. Además, lo hacen en el idioma que el usuario haya seleccionado. Además, lo emiten por stderr, que es donde esperaría encontrarlo cualquier usuario. Prueba esto y decide tú mismo: ls $1 || exit O mejor aún, mete un "set -e" al principio del script (bash). Más info en "help set". > Estoy con la basico. No quiero adentrarme (todavia) en profundidad, pero me > gustaria saber si algo existe o no. Mírate las CONDITIONAL EXPRESSIONS del manual de bash: man bash<return>/^CON<return> -- Gonzalo Pérez de Olaguer Córdoba <gpoc@iies.es> PGP key 2861C704 --- F206 5671 6789 425D 111C 1302 214F 1934 2861 C704
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads