lunes, 18 de febrero de 2008

Programación Shell (parte 2)

Asran [asran@isppr.rimed.cu]

Como lo prometido es deuda, aquí traigo la continuación del artículo anterior. Estructuras de control en la programación batch o de ficheros por lotes.

Estructuras condicionales:

IF Permite la ejecución condicional.[ya lo sabemos] aquí hacemos una descripción en función del lenguaje batch o shell.

Sintáxis
If [NOT] <Condición> <acción>

Donde:
IF es un palabra reservada
NOT palabra reservada que actúa normalmente como operador de negación lógica
<Condición> normalmente es la condición a evaluar pero puede estar dada por:
-La función del ERRORLEVEL <numero> que tornará el valor de veracidad de la condición si el código de error devuelto por el sistema es mayor o igual al numero especificado ejemplo:

IF ERRORLEVEL 126 exit
En este caso la acción a ejecutar: exit (comando de salida del DOS) pero solo si el código de error devuelto por el SO es mayor o igual que 126.

-La comparación de dos valores, ejemplo:
IF NOT string1==string2 pause
Como es evidente de ser verdadera la condición se producirá una pausa en la ejecución.
Nótese la presencia de la palabra reservada NOT (sirva como ejemplo de la misma).
-La palabra reservada EXIST específica si existe el fichero especificado por el argumento, ejemplo
IF NOT EXIST C:\autoexec.bat copy C:\autoexec.bat D:\
Dada la existencia del fichero autoexec.bat en el volumen C:\ se le haría una copia para D:\
<acción> Como hemos visto en los ejemplos anteriores la componente acción de la sintaxis es el comando a ejecutar de ser verdadero el valor veritativo de la condición. Recordar la acción del operador NOT.

CHOICE es una estructura condicional múltiple y funciona como tal, similar al case of de Pascal
Sintaxis
CHOICE [/C[:]letra] [/N] [/S] [/T[:]c,nn] [texto]

Puedes especificar un texto que aparecerá antes de la entrada de datos. No hace falta que lo entrecomilles, salvo que dicha cadena de texto incluya una barra /. Es un parámetro opcional.
Modificadores
/C[:]letra
Especifica las letras que indicarán las opciones del usuario. Si las especificas separadas por comas, aparecerán entre corchetes seguidas de un interrogante. Si no se especifican, se usara YN (si, no) por defecto.

/N
Evita que se muestre el prompt de usuario

/S
Hace que discrimine entre entrada de letras mayúsculas o minúsculas.

/T[:]c,nn
Introduce un tiempo de espera antes de ejecutar la acción por defecto. Con los siguientes posibles valores:

c
Señala que carácter será usado como opción por defecto después de nn segundos. Solo puedes indicar uno de los caracteres especificados con el modificador /C

nn
Indica el numero de segundos de pausa. Valores entre 0 y 99.

Estructuras iterativas:

Bueno el Shell de Microsoft (MS) solo cuenta con una estructura iterativa y es el ciclo finito FOR
FOR Ejecuta un comando sobre un grupo de archivos.

FOR %%variable IN (set) DO <commando>
%%variable %variable
Representa una variable que será reemplazada por su valor. FOR reemplazará %%variable o %variable con la cadena de caracteres especificados en SET hasta que el comando especificado se haya ejecutado sobre todos los archivos. %%variable se emplea con FOR dentro de archivos batch, y %variable desde la línea de comandos.

Variables
El signo % seguido de un numero (del 1 al 9) permite pasar parámetros al invocar nuestro archivo bat. Por ejemplo si tenemos un archivo saludo.bat con la línea echo Hola %1, si lo invocamos tecleando archivo.bat pepe presentará en pantalla Hola Pepe. Se usa por ejemplo para pasar nombres de ficheros a un bat que se encarga de borrarlos, moverlos, etc.

Estructuras de salto:

Bueno aquí como en todas partes existe GOTO
GOTO Salta la ejecución del programa hacia la línea indicada:

Sintaxis
GOTO <label>
Donde:
GOTO es una palabra reservada
Label es una etiqueta que identifica la línea con un máximo de 8 caracteres.

Nota: cuando se etiqueta un línea debe especificarse con dos puntos(:) ejemplo:
:et_1 tree
:et_2 ping infomed.sld.cu

Un poco más:

Como vera el amigo estamos ante un lenguaje de programación interpretado. Poco complejo. Pero aquí también se pueden comentar las líneas de comandos usando la palabra reservada REM o un doble dos puntos (::).

Bueno, espero haber cumplido la promesa, y saldado la deuda.


Artículos relacionados


No hay comentarios: