Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Programación con Shell




Enviado por Pablo Turmero



    Monografias.com
    CASE La proposición case. Sintáxis: case palabra in
    patrón) comandos;; patrón) comandos;; … esac
    Compara la palabra con los patrones en sentido descendente y
    ejecuta los comandos asociados al primer patrón que se
    reconozca y sólo a ese patrón. Este ejemplo, indica
    el Shell en uso: case $SHELL in /bin/sh) echo “Usted
    está usando el Bourne Shell”;; /bin/ksh) echo
    “Usted está usando el Korn Shell”;; /bin/csh)
    echo “Usted está usando el C Shell”;;
    /bin/rsh) echo “Usted está usando el Restricted
    Shell”;; *) echo “Usted está usando un Shell
    desconocido”;;

    Monografias.com
    IF La proposición if de shell ejecuta comandos basados en
    la condición de terminación de un comando.
    Sintáxis: if comando then comandos si la condición
    es verdadera else comandos si la condición es falsa fi La
    parte else es opcional Todo comando devuelve una condición
    de terminación: una valor retornado al shell para indicar
    qué sucedió. Por convención, 0 significa
    “verdadero” (el comando ejecutó bien) y no
    cero significa “falso” (el comando no ejecutó
    correctamente). el Shell guarda la condición de
    terminación del último comando en la variable
    $?

    Monografias.com
    El comando test Permite verificar la existencia de archivos y
    ciertas condiciones de los mismos. Además permite la
    comparación de valores. La única finalidad del
    comando test es devolver una condición de
    terminación. Algunas opciones: test “$1” =
    cadena Verifica si el primer parámetro es igual a
    “cadena” test int1 -eq int2 Verifica si el el entero
    int1 es igual al entero int2 test –f archivo Verifica si
    existe el archivo y no es un directorio test –d archivo
    Verifica si existe el archivo y es un directorio test –r
    archivo Verifica si existe el archivo y si puede leerse test
    –w archivo Verifica si existe el archivo y si puede
    escribirse Si test no está predefinido en el Shell (es un
    comando aparte) es más eficiente el uso de case que el de
    un if con un test en la condición. Test se puede resumir
    mediante: [ expresión ]. Por ejemplo: test –f
    “$1” es igual que [ -f “$1” ]

    Monografias.com
    Ejemplo: Comado “which” $ cat which # which cmd:
    Indica cuál comando de PATH se ejecuta case $# in 0) echo
    ‘Uso: which commando’ 1>&2; exit 2 esac for i
    in `echo $PATH | sed ´s/:/ /g´` do if test –x
    $i/$1 then echo $i/$1 exit 0; #Se encontró fi done exit 1
    #No se encontró

    Monografias.com
    ¿Qué ocurriría si tenemos en nuestro
    directorio de trabajo otro programa llamado echo que hace otra
    cosa, y en la variable $PATH tenemos el directorio . primero? Dos
    soluciones posibles: i) Utilizar los comandos con su ruta
    completa. Por ejemplo: /bin/echo ii) Redefinir la variable PATH
    dentro del SCRIPT incluyendo sólo los directorios
    necesarios.¿Qué ocurre con la variable PATH
    original? Ejemplo: Comado “which” (cont.)

    Monografias.com
    || es un operador condicional que significa OR
    (Disyunción).Sintáxis: $ comando1 || comando2El
    comando a la izquierda se ejecuta; si la condición de
    terminación es cero (éxito), el comano a la derecha
    de || se ignora.Si la condición de terminación es
    no cero (fracaso) el lado derecho se ejecuta y el valor de la
    expresión completa es la condición de
    terminación del lado derecho. De forma similar &&
    es un operador condicional que significa AND (conjunción):
    ejecuta el comando de la derecha sólo si el de la
    izquierda tiene éxito. Los comandos || y &&

    Monografias.com
    Así como vimos que el comando for ejecuta un conjunto de
    comandos una vez para cada elemento de un conjunto de palabras,
    los ciclos while y until usan la condición de
    terminación de un comando para controlar la
    condición de terminación de un comando para
    controlar la ejecución de comandos en el cuerpo del
    ciclo.El cuerpo del ciclo se ejecuta hasta que el comando de la
    condición de no-cero (para while) o de cero (para until).
    Sintáxis: while comando do cuerpo del ciclo ejecutado
    mientras el comando devuelva verdadero done until comando do
    cuerpo del ciclo ejecutado mientras el comando devuelve falso
    done While y Until

    Monografias.com
    while sleep 60 # Hace una espera de 60’ y luego do #
    verifica si carlos está en sesión who | grep carlos
    done until who | grep carlos # Si carlos está logueado lo
    muestra y do # espera 60 segundos para un nuevo sleep 60 #
    control (¡Más eficiente! sólo ejecuta donde #
    el sleep si carlos está en sesión) While y Until
    (Ejemplo)

    Monografias.com
    El comando integrado de shell shift mueve la lista completa de
    argumentos una posición hacia la izquiera: $2 se convierte
    en $1, $3 en $2, etc. “$@” proporciona todos los
    argumentos (después del comando shift), a semejanza de $*.
    Por ejemplo estos dos ciclos son equivalentes: for i in $* for i
    in $* do do echo $i echo $1 done shift done El comando
    shift

    Monografias.com
    Reglas para la evaluación de variables de Shell $var Valor
    de var o Nada si var no está definida ${var} Idem
    anterior, útil si la variable está mezclada dentro
    de una cadena alfanumérica. ${var-algo} Valor de var si
    está definido; de lo contrario algo $var no cambia.
    ${var=algo} Valor de var si está definido; de lo contrario
    algo Si no está definido, a $var se le asigna algo
    ${var?mensaje} Valor de var si está definido; de lo
    contrario se imprime mensaje y abandona el shell. Si mensaje
    está vacío muestra: var: parameter not set.
    ${var+algo} algo si $var está definido, de lo contrario
    nada Evaluación de variables

    Monografias.com
    El comando trap establece una secuencia de comandos que se
    ejecutan al producirse una seña. Sintáxis: $ trap
    secuencia-de-comandos números de señal La secuencia
    de comandos es un argumento individual, por lo cuál casi
    siempre irá entre delimitadores. Los números de
    señal son enteros pequeños que identifican la
    señal de acuerdo a la siguiente lista: 0 Salida del shell
    (Por cualquier razón incluyendo fin de archivo) 1 Corte 2
    Interrupción (Tecla suprimir) 3 Abandonar (Ctrl-; hace
    que el programa produzca una vaciado de memoria 9 Cancelar (No
    puede detectarse ni ignorarse) 15 Terminar, señal por
    default generada por kill Por ejemplo: Util para incluir una
    instrucción para borrar un archivo temporal en el caso de
    que se produzca una interrupción a un script: trap
    ‘rm –f $ARCHIVOTEMPORAL: exit 1’ 1 2 15 …
    Traps: Detección de interrupciones

    Monografias.com
    La secuencia de comandos que forma el primer argumento de trap se
    parece a una llamada a una subrutina que se presenta de inmediato
    al producirse la señal. Cuando finalizan las instrucciones
    asociadas a la señal, el programa se reanudará
    donde había quedado interrumpido a menos que la
    señal lo cancele explicitamente mediante exit. La
    secuencia nula de comandos significa ‘ignorar las
    interrupciones’ en este proceso y sus hijos. Ejemplo:$ (
    trap ‘ ‘ 1; comando-largo ) & La señal
    –9 no puede detectarse ni detenerse es por eso que:kill
    –9 identificador-de-proceso siempre cancela el proceso no
    así kill identificador-de-proceso ya que puede contar con
    algún trap que ignore la señal. Traps (Cont.)

    Monografias.com
    Todas las variables del Shell Bourne se almacenan en forma de
    cadenas de caracteres. Para poder realizar operaciones
    aritméticas y lógicas con números enteros es
    preciso traducirlos a enteros, y hay que volver a traducir el
    resultado a una cadena de caracteres para almacenarla
    correctamente en una variable shell. Para esto se utiliza el
    comando expr Sintáxis: expr argumentos Evalúa los
    argumentos de la expresión y envia el resultado a la
    salida estándar. Operadores =, >, >=, <,
    <=, != Operadores de comparación +, -, *, /, %
    Operadores de aritmética entera | Proporciona la 1era
    expresión si no es nula o 0, de lo contrario, proporciona
    la segunda expresión. & Proporciona la 1era
    expresión si ninguna es nula o 0, de lo contrario,
    proporciona 0. Los metacaracteres del shell como * deben ir
    precedidos de la barra invertida. Datos Numéricos. comando
    expr

    Monografias.com
    $ cat contar if [ $# != 1 ] then echo “Uso: $0
    argumento-entero” exit 1 fi maximo = “$1” #
    Fijamos el número pasado como parámetro actual = 1
    # Primer número while [ $actual –le $maximo ] do
    echo “$actual c” actual=`expr $actual + 1` done echo
    exit 0 $contar 5 1 2 3 4 5 $ Comando expr (Ejemplo)

    Monografias.com
    $ cat sumador if [ $# = 0 ] then echo “Uso: $0 lista de
    números” exit 1 fi suma = 0 # Fijamos el acumulador
    en cero while [ $# != 0 ] do suma=`expr $suma + $1` shift done
    echo “La suma es: $suma” exit 0 $ Comando expr (Otro
    ejemplo)

    Monografias.com
    Ejercicios 1. a) Desarrollar un Shell Script que busque
    ordenadamente el nombre de un comando (que se recibe como
    parámetro) en cada uno de los directorios de la variable
    $PATH e indica la ruta completa del que se ejecutaría al
    imbocarlo. b) Incorpore una breve descripción del comando
    en la caso de que el mismo tenga página de manual. 2.
    Elabore un script que reciba un directorio como parámetro
    y analice todo el árbol de archivos y directorios debajo
    del mismo y produzca la siguiente información: a) Cantidad
    de archivos de los que disponemos permiso de lectura. b) Cantidad
    de archivos de los que disponemos permiso de escritura. c)
    Cantidad de archivos de los que disponemos permiso de
    ejecución. d) Cantidad de directorios de los que
    disponemos permiso de lectura. e) Cantidad de directorios de los
    que disponemos permiso de escritura. f) Cantidad de directorios
    de los que disponemos permiso de ejecución. g) Cantidad de
    archivos de dispositivos encontrados. h) Cantidad de archivos con
    SUID encontrados.

    Monografias.com
    Ejercicios 3. a) Desarrolle un Shell Script que reciba como
    parámetros pares formados por “comando” y
    “descripción” y que construya un menú
    de opciones donde cualquiera de los comandos pueda ser ejecutado
    seleccionando la descripción correspondiente. b)
    Desarrolle una segunda versión de este programa que toma
    la lista de comandos y descripciones de una archivo con cada par
    en cada línea separados por : 4.) Elaborar un Shell Script
    que reciba como parámetros n números de 1 a 75. Por
    cada argumento recibido, imprimir una línea con un
    caracter a elección tantas veces como indique el
    número. 5) Crear un Shell Script llamado
    “promedio” que calcule el promedio de todos los
    números recibidos cómo parámetro. 6)
    Incorpore un saludo de bienvenida al .profile. de acuerdo al
    siguiente criterio: de 06:00 a 13:00 hs. “Buenos
    días [su nombre de usuario]” de 13:00 a 19:00 hs.
    “Buenos tardes [su nombre de usuario]” de 19:00 a
    06:00 hs. “Buenas noches [su nombre de
    usuario]”

    Monografias.com
    Ejercicios 7. Modifique el comando which para que acepte
    más de un comando de entrada. 8. Desarrollar un script que
    reciba como parámetro un directorio. Verificar que el
    mismo existe y devolver la suma de los tamaños de todos
    los archivos que se encuentran en ese directorio.

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter