0% encontró este documento útil (0 votos)
188 vistas24 páginas

Capitulo 1

Este documento proporciona una introducción a los scripts de shell. Explica qué es un shell y un shell script, y cómo ejecutar un shell script. Luego cubre temas como comentarios, variables, parámetros, comillas, el comando test y estructuras de control básicas. Finalmente, incluye algunos ejemplos y ejercicios resueltos para ilustrar el uso de estas funciones.

Cargado por

patty177
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
188 vistas24 páginas

Capitulo 1

Este documento proporciona una introducción a los scripts de shell. Explica qué es un shell y un shell script, y cómo ejecutar un shell script. Luego cubre temas como comentarios, variables, parámetros, comillas, el comando test y estructuras de control básicas. Finalmente, incluye algunos ejemplos y ejercicios resueltos para ilustrar el uso de estas funciones.

Cargado por

patty177
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 24

Script

Shell Script

[CAP 1]

CAPTULO 1 _________________________________________ Programacin en Shell


Objetivo
Programacin de Shell script

Contenido

Qu es un Shell script? Ejecutar un Shell script Uso de comentarios Variables y parmetros Uso de comillas Comando test Estructura de control Funciones Array Ejercicios Propuestos Otros paquetes

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Qu es un shell?
Es el interprete de comandos, que permite que los comandos y programas que tecleamos sean ejecutados. En UNIX hay varios tipos de shell que ofrecen diferentes caractersticas: Bourne shell (sh) C shell (csh) TC shell (tcsh) Korn shell (ksh) Bourne Again SHell (bash

Shell script
Un shell script es un fichero donde hemos introducido cualquier comando que se puede ejecutar en la shell. Se pueden incluir comandos UNIX, utilidades, emplear pipes, redireccionar entradas y salidas, definir y utilizar variables, adems del uso de una serie de comandos UNIX creados para ser usados fundamentalmente en los shell scripts, como son condicionales y comandos para controlar el flujo del programa. Ejemplo Creamos con un editor de textos las siguientes lneas echo "Veamos quien esta en el sistema" who echo En que directorio me encuentro? pwd echo A que fecha estamos? date echo Bien! comencemos a trabajar... Lo guardamos con el nombre miscript

EJECUTAR EL SCRIPT
Podemos ejecutar el script de varias maneras: $ bash < miscript $ # Tambin podemos ejecutarlo de otra forma $ cat miscript | bash $ # Ejecutar pasando el nombre del fichero como argumento $ sh miscript $ # Ejecutar ordenes de un fichero desde la shell actual $ ./miscript

Para ejecutar el script de las maneras anteriores, slo es necesario que tenga permiso de lectura. Para ejecutarlo directamente como un comando necesitamos darle permiso de ejecucin,

$ # Ejecutar pasando el nombre del fichero como argumento $ chmod +x miscript


Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

$ ./miscript El programa mostrara lo siguiente:

Uso de comentarios.
Suele ser bastante comn que despus de escribir un shell-script y no utilizarlo durante algn tiempo no recuerdes qu haca o cmo funcionaba. Debes acostumbrarte a insertar comentarios en tus shell scripts para explicar el propsito del script y cmo lo lleva a cabo. El shell ignora comentarios; stos slo son importantes para los usuarios.
Ejemplo: # Nombre: comenzar # Escrita: 6/12/99, Juanan Pereira # Propsito: Mostrar quin est conectado, nombre del directorio de # inicio y fecha echo Veamos quien est en el sistema.. who # aqui tambien pueden ponerse comentarios echo En qu directorio me encuentro? pwd echo A qu fecha estamos? date echo Bien! comencemos a trabajar... Ejecuta el script de nuevo y vers que los resultados no han cambiado. Los comentarios no modifican el comportamiento del script.

Variables y parmetros
Variables de entorno .
Hay una serie de variables afectan al comportamiento de la shell, tanto a la hora de trabajar de forma interactiva como desde los scripts que sta interpreta. Estas variables pueden ser accedidas y modificadas en la linea de comandos y tambin en los scripts. Se puede ver el valor de todas las variables de entorno definidas en un momento dado invocando al comando set sin argumentos. Algunas variables especialmente tiles y su significado: $HOME : Directorio 'home' del usuario. $PATH : Rutas en las que la shell busca los ejecutables cuando se invoca un comando. $? : Esta variable contiene el valor de salida del ltimo comando ejecutado, es til para saber si un comando ha finalizado con xito o ha tenido problemas. Un '0' indica que no ha habido errores, otro valor indica que s ha habido errores. $UID : Identificador del usuario que ejecuta el script. $! : Identificador de proceso del ltimo comando ejecutado en segundo plano.

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Declaracin y uso de variables .


No es necesario declarar las variables, basta con asignar un valor a una variable para crearla. Para acceder al valor que contiene una variable se usa el caracter $, de la siguiente forma: variable = `date` echo $variable

Parmetros recibidos por un script .


Algunas variables establecidas internamente por el shell y que estn disponibles para el usuario: variables $1 - $9 $0 $# $? $$ $! $$* $@@ Parmetros posicionales Nombre del comando actual Nmero de parmetros posicionales exit status del ltimo comando ejecutado dado como un string decimal. Si todo ha ido bien se retorna cero. El numero de proceso de este shell, til para incluirlo en nombres de ficheros para hacerlos nicos. La pid del ltimo comando ejecutado en background. Las opciones actuales suministradas para esta invocacin del shell. Un string que contiene todos los argumentos del shell comenzando por el $1. Igual que el anterior, excepto cuando va entrecomillado. Descripcin

Ejemplo 1.- Cdigo del script echo "Numero de parametros=$#" echo 'Primer valor='$0 echo 'Segundo valor='$1 echo 'Tercero Valor='$2 echo 'Cuarto Valor='$3 echo 'Todo='$* 2.- Salida

Uso de las comillas


En general las comillas se usan para prevenir que la shell interprete ciertos caracteres dentro de una cadena y para que tome una cadena con espacios como una sola palabra..

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

a) Comillas dobles . En general los caracteres especiales no son interpretados cuando estn entre
comillas dobles. Sin embargo algunos de ellos s son interpretados: $ :Esta permitido referenciar variables dentro de las comillas dobles. \ :Se pueden escapar caracteres. ` : Se puede realizar sustitucin de comandos, esto es, ejecutar un comando y sustituir la cadena por su salida. b) Comillas simples . Dentro de las comillas simples todos los caracteres son interpretados literalmente, ninguno de los caracteres especiales conserva sus significado dentro de ellas. c) Comillas invertidas . Poner una cadena entre comillas invertidas supone ejecutar su contenido como un comando y sustituir su salida.

Ejercicios Resueltos
1.-Pongamos que tenemos varios ficheros en el directorio actual. Dos de ellos son ficheros jpg, correo.jpg y tux.jpg. #!/bin/sh echo *.jpg Imprimir "correo.jpg tux.jpg". 2.-Usar comillas (simples y dobles) evitar esta expansin de comodines: #!/bin/sh echo "*.jpg" echo '*.jpg' Esto mostrar "*.jpg" dos veces. 3.-Las comillas simples son las ms estrictas. Evitan incluso la expansin de variables. Las comillas dobles evitarn la expansin de comodines pero no as la de variables: #!/bin/sh echo $SHELL echo "$SHELL" echo '$SHELL'

Esto mostrar:
/bin/bash /bin/bash $SHELL 4.-Finalmente existe la posibilidad de eliminar el significado especial de un nico caracter anteponiendole una barra invertida: echo \*.jpg echo \$SHELL Esto mostrar: *.jpg $SHELL

Leer de la entrada standard.


Para leer de la entrada standard se utiliza el comando read. Ejemplo: 1.- Codigo del script echo "introduce el primer valor" read a echo "introduce el Segundo valor" read b
Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

echo "introduce el Tercer valor" read c m=$(echo "($a+$b+$c)/3" |bc -l) echo "La media es" echo $m 2.-Salida

Comando test

'test' es un comando externo que devolver un cdigo de retorno 0 o 1 dependiendo del resultado de la expresin que siga a continuacin. Se usa muchsimo y tiene dos formatos. 'test <expr>' o '[ <expr> ]'. ambas formas son equivalentes. Las expresiones de este tipo que solo pueden valer TRUE o FALSE se denominan expresiones lgicas. Comprobacin sobre ficheros -r <fichero> -w <fichero> -x <fichero> -f <fichero> -d <fichero> -c <fichero> -b <fichero> -p <fichero> -u <fichero> -s <fichero> TRUE si el fichero existe y es legible. TRUE si el fichero existe y se puede escribir. TRUE si el fichero existe y es ejecutable. TRUE si el fichero existe y es de tipo regular (normal). TRUE si existe y es un directorio. TRUE si existe y es un dispositivo especial de caracteres. TRUE si existe y es un dispositivo especial de bloques. TRUE si existe y es un pipe (fifo). TRUE si existe y tiene el bit set-user-ID. TRUE si existe y tiene tamao mayor que 0. Comparacin de cadenas -z <cadena> -n <cadena> <cadena1> = <cadena2> <cadena1> != <cadena2> TRUE si es una cadena vaca. TRUE si es una cadena no vaca. TRUE si ambas cadenas son idnticas. OJO hay dejar espacios a un lado y otro del signo igual para no confundir la orden con una asignacin. TRUE si son distintas.

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

<cadena>

TRUE si no es cadena nula. (Una variable que no existe devuelve cadena nula). Comparacin de nmeros

<num1> -eq <num2> <num1> -ne <num2> <num1> -gt <num2> <num1> -ge <num2> <num1> -lt <num2> <num1> -le <num2>

TRUE si ambos nmeros son iguales. TRUE si ambos nmeros son distintos. TRUE si <num1> mayor que <num2>. TRUE si <num1> mayor o igual que <num2>. TRUE si <num1> menor que <num2>. TRUE si <num1> menor o igual que <num2>. Operadores lgicos

! <expresin_logica> <ExprLogi1> -a <ExprLogi2> <ExprLogi1> -o <ExprLogi2>

Operador lgico NOT retorna TRUE si <expresin_logica> es FALSE y retorna FALSE si <expresin_logica> es TRUE. Operador lgico AND retorna TRUE si <ExprLogi1> y <ExprLogi2> son ambas TRUE y FALSE en caso contrario. Operador lgico OR retorna TRUE si <ExprLogi1> o <ExprLogi2> son alguna de ellas TRUE y FALSE en caso contrario. Agrupacin de expresiones

( <expr> )

Se pueden usar parntesis para agrupar expresiones lgicas. Es decir que valgan TRUE o FALSE

Ejemplos:
$ test -r /etc/passwd ; echo $? 0 $ test -w /etc/passwd ; echo $? 1 $ test -x /etc/passwd ; echo $? 1 $ test -c /dev/null ; echo $? 0 $ test -r /etc/passwd -a -c /dev/null ; echo $? 0 $ test -w /etc/passwd -a -c /dev/null ; echo $? 1 $ test -r /etc/passwd -a -f /dev/null ; echo $? 1 $ [ -s /dev/null ] ; echo $?
Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

1 $ [ ! -s /dev/null ] ; echo $? 0 $ [ "$$" = "zzzzzzzzzzzz" ] ; echo $? 1 $ [ 0 -lt $$ ] ; echo $? 0 $ [ 0 -lt $$ -a true ] ; echo $?

Expresiones aritmticas -+ */% +<= >= < > == != Menos unrio y Ms unrio Multiplicacin, Divisin, y Resto Suma, y Resta Comparaciones Menor o igual, Mayor o igual, Menor, Mayor Igualdad, desigualdad Asignacin simple, Asignacin con operador (multiplicacin, divisin, resto, suma, y resta)

= *= /= %= += -=

Ejemplo: 1.- Cdigo del script echo "introduce el primer valor" read a echo "introduce el Segundo valor" read b echo "introduce el Tercer valor" read c m=$[($a+$b+$c)/3] #m=$(echo "($a+$b+$c)/3" |bc -l) echo "La media es" echo $m if [ $m -ge 11 ] then echo "Aprobado" else echo "Desaprobado" fi

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

2.- Salida

Estructuras de control
Como en cualquier lenguaje de programacin, la shell ofrece estructuras que permiten controlar el flujo de ejecucin de los scripts.

Bucle for
El bucle for sigue la siguiente notacin general :

for variable in lista-de-palabras do comandos done


Comandos es una secuencia de uno o mas comandos separados por una lnea o por un ; (punto y coma). Las palabras reservadas do y done deben estar precedidas por una lnea o por un ; . for variable in lista; do comandos; done

Ejercicios Resueltos:
1.- Este programa genera nmeros consecutivos del 1 al 10 a.-Cdigo del programa for num in 1 2 3 4 5 6 7 8 9 10 do echo $num done b.-Salida

2.- Por cada usuario dado como argumento se comprueba si est conectado o no y se da
Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

el mensaje apropiado a.- Cdigo del programa for i in $* do if who | grep -s $i > /dev/null then echo $i est conectado else echo $i no est conectado fi done b.-Salida

3.- Un script de ejemplo ms til es este, llamado showrpm, que muestra un resumen del contenido de una serie de paquetes RPM:
#!/bin/sh # listar un resumen del contenido de una serie de paquetes RPM # USO: showrpm ficherorpm1 ficherorpm2 ... # EJEMPLO: showrpm /cdrom/RedHat/RPMS/*.rpm for rpmpackage in $*; do if [ -r "$rpmpackage" ];then echo "=============== $rpmpackage ==============" rpm -qi -p $rpmpackage else echo "ERROR: no se pudo leer el fichero $rpmpackage" fi done

4.-El siguiente ejemplo muestra por pantalla de la letra A a la C:


#!/bin/sh for var in A B C ; do echo "var es $var" done

Bucle while .
Sintaxis: while [ condicion ] do comandos

done

Ejercicios Resueltos Este ejemplo permite obtener el factorial de un nmero a.- Cdigo del programa echo "Ingrese un numero" read num factorial=1 i=1 condicion=$[$num+1] while [ $i -lt $condicion ]

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

do factorial=$[$factorial*$i] i=$[$i+1] done echo "Factorial=$factorial" b.-Salida del Programa

Bucle until
until [ <condicion> ] do ... done

Ejemplo 1:
x=1 until [ $x -ge 10 ] do echo "contandor simple: $x" x=$[ $x+1 ] done

Ejemplo 2:
#!/bin/sh while who |grep -s $1 >/dev/null do sleep 60 done echo "$1 est desconectado? El script verifica si el usuario que se pasa como argumento est conectado, mientras lo est el script espera 60 segundos antes de hacer una nueva verificacin. #!/bin/sh until test -f $FILE do sleep 60 done echo "$FILE now exists" Verifica cada 60 segundos si existe el fichero representado por la variable $FILE.

Las instrucciones break y continue.


Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

La instruccin break termina la ejecucin del bucle mas interior causando la ejecucin de la instruccin done mas cercana. Para salir del nivel n, usa : break n, esto causa la ejecucin de la instruccin done n. El comando continue causa la ejecucin de la instruccin while, until o for en la cual comienza el bucle que contiene el comando continue.

Setencia if
Primera forma if [ <condicion> ] then ... else ... fi Segunda forma if [ <condicion1> ] then ... elif [ <condicion2> ] ... else ... fi Ejercicios Resueltos 1.- Cdigo del programa echo "Ingresa un archivo" read file if [ -f $file ] then echo "Numero de Lineas:" cat $file|wc -l else echo "No existe el archivo" fi

Salida del programa

2.-Cdigo del programa echo "Ingresa la direccin absoluta de un archivo" read a if [ -f $a ] then echo "El archivo ya existe, Lo quieres ver s/n" read b if [ "$b"="s" ] then cat $a else exit
Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

fi else echo "El archivo NO existe, Lo quieres crear s/n?" read c if [ "$c"="s" ] then cat >$a echo "Ya lo he creado" else exit fi fi Salida cuando existe el archivo ingresado

Salida cuando NO existe el archivo ingresado

Setencia Case
El flujo del programa se controla en base a una palabra dada. Esta palabra se compara con cada patrn hasta que se encuentra uno que haga juego. Cuando se encuentra, se ejecuta el comando asociado y se termina la instruccin. case palabra-dada in patrn1) comandos ;; patrn2|patrn3) comandos ;; patrnN) comandos ;; esac

Un comando puede asociarse con mas de un patrn. Los patrones pueden separarse unos de otros con el smbolo | . El orden de chequeo es el orden en que aparecen los patrones. Para especificar un patrn por defecto se pueden usar wildcards : ? comprueba un carcter * comprueba cualquier nmero de cualquier tipo de caracteres [nnn] comprueba cualquiera de los caracteres entre corchetes [!nnn] comprueba cualquier carcter que no este entre los corchetes [n-n] comprueba cualquier carcter en el rango

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Ejercicios resueltos 1.-Este ejemplo muestra el uso de la sentencia case. a.- Cdigo del programa case $1 in 1) echo Uno ;; 2) echo Dos ;; [3-7]) echo "Entre tres y siete ambos incluidos" ;; 8|9|0) echo Ocho; echo Nueve; echo Cero ;; [a-zA-Z]) echo Una Letra ;; start|begin) echo Comienzo ;; stop|end) echo Fin ;; *) echo 'Fallo' esac b.- Salida

2.-Ahora vamos a usar esto para escribir un script llamado smartzip que puede descomprimir ficheros comprimidos con bzip2, gzip y zip automaticamente : #!/bin/sh tipofichero=`file "$1"` case "$tipofichero" in "$1: Zip archive"*) unzip "$1" ;; "$1: gzip compressed"*) gunzip "$1" ;; "$1: bzip2 compressed"*) bunzip2 "$1" ;; *) error "El fichero $1 no se puede descomprimir con smartzip";; esac

Controlar la finalizacin de un shell script


Para finalizar un shell script se utiliza el comando exit. Se le puede dar un argumento numrico que toma como status. Si se omite el status ser el del ltimo comando ejecutado. Por ejemplo exit 2, devuelve status=2.

Funciones
El uso de funciones en los scripts nos facilitara la organizacin y el mantenimiento del cdigo. Podemos definir una funcin de dos formas:

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

function nombre_de_la_funcion { cdigo }

y la segunda forma nombre_de_la_funcion() { cdigo }

Las funciones suelen declararse al principio del script ya que deben ser declaradas antes de poder usarlas. Para llamar a una funcin basta con invocar su nombre y pasarle los parmetros que necesite: #!/bin/bash mi_funcion() { echo "Hola, soy la funcin." } clear mi_funcion Podemos declarar variables locales dentro de las funciones, de forma que estas variables slo puedan usarse por nuestra funcin y no por el resto del script. Para hacer esto debemos definir las variables del siguiente modo. mi_funcion() { local variable_local="valor" echo ${variable_local} } Veamos un ejemplo: #!/bin/bash mi_funcion() { local VARIABLE_LOCAL="local" echo "Hola soy la variable ${VARIABLE_LOCAL}" echo "Esta funcin ha recibido $# parmetros: $@" } clear mi_funcion {"uno","dos","tres"} echo "El valor de la variable local de la funcin es:"${VARIABLE_LOCAL} En este ejemplo le hemos pasado tres argumentos a la funcin, que son imprimidos en pantalla desde la misma funcin. Por otra parte tambin podis observar que el valor de la variable local definida en la funcin no se imprime fuera de ella.

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Ejercicios Resueltos 1.-Un ejemplo sencillo: Construccin de un men a.- Cdigo del programa muestraopcionesmenuprin() { clear echo '1) Fecha y hora' echo '2) Calendario del ms actual' echo '3) Particiones del disco ' echo '4) Directorio actual' echo '5) Configuracion de red' echo '6) Memoria libre del sistema' echo '7) Estado de apache' echo '8) Ocupacion de todo el sistema de ficheros' echo '0) Terminar' echo echo -e "Introduzca la opcin deseada : \c" } ######################################################################### pausa () { echo echo -e "Pulse para continuar" read } ######################################################################### ############################### MAIN ################################### ######################################################################### while true do muestraopcionesmenuprin read OPT clear case $OPT in 0) exit ;; 1) date ; pausa ;; 2) cal ; pausa ;; 3) fdisk -l; pausa;; 4) pwd;pausa ;; 5) ifconfig ; pausa ;; 6) cat /proc/meminfo ; pausa ;; # Podra usarse el comando free 7) service httpd status; pausa ;; 8) df ; pausa ;; *) echo -e "Opcion erronea.\a" ; pausa ;; esac done b.- salida

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Array

Un array es un medio de guardar un conjunto de objetos de la misma clase. Se accede a cada elemento individual del array mediante un nmero entero denominado ndice. 0 es el ndice del primer elemento y n-1 es el ndice del ltimo elemento, siendo n, la dimensin del array. Los arrays son objetos en Java y como tales vamos a ver los pasos que hemos de seguir para usarlos convenientemente

Declarar y crear un array


Para declarar un array se escribe declare -a name Otra forma para declarar un array es declare -a name[indice] El ndice es ignorado.

Inicializar y usar los elementos del array


Para inicializar el array se usa la siguiente sintaxis:

name[indice]=value El ndice debe ser mayor o igual a cero Ejemplo: Para inicializar el array de 4 enteros escribimos
numeros[0]=2 numeros[1]=4 numeros[2]=15 numeros[3]=25

Otra forma de inicializar un array es:

name=(value1 ... valuen) Donde cada valor es de la forma [indice]=cadena Ejemplo : frutas=(manzana naranja platano) echo "Indice cero=${frutas[0]}" echo "Indice uno=${frutas[1]}" echo "Indice dos=${frutas[2]}"

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Obtener los elementos del array


${name[indice]}

Cualquier elemento de un array se obtiene con la siguiente sintaxis:

Si el ndice es @ o * se obtiene todos los elementos del array Ejemplo :


sistema[0]=linux sistema[1]=windows sistema[2]=novel echo "Indice cero=${sistema[0]}" echo "Indice uno=${sistema[1]}" echo "Indice dos=${sistema[2]}" echo "------ Todos los miembros-----" echo "todo1=${sistema[*]}" echo "todo2=${sistema[@]}"

ltimos Ejemplos Ejemplo1:


#!/bin/bash # function1.sh function uso () { echo "Este script recibe dos argumentos." echo "El primero debe ser --opc1 u --opc2 ," echo "y el segundo debe ser un fichero existente." echo "--" } if [ $# -ne 2 ]; then uso exit 1 fi case $1 in --opc1)

if [ -e $2 ]; then echo "El script termin con xito" exit 0 else uso exit 1 fi

;;
Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

--opc2) if [ -e $2 ]; then echo "El script termin con xito" exit 0 else uso exit 1 fi uso exit 1

;; *) ;; esac

Ejemplo2:
#!/bin/bash function lista_parametros () { echo "Se ha llamado a lista_parametros, con $#" echo "parmetros. Mostrando los parmetros:" echo " " b=7 numparms=$# local j=1 while [ $j -le $numparms ]; do echo "El parmetro $j contiene $1" shift local j=$[$j+1] done } lista_parametros a b c d dsfafd d echo $b echo $j

Ejemplo3:
#!/bin/bash # # Variables de configuracin # + Acabado en / !!!! DIRECTORIO_SALIDA=/home/camara/ # # # Funciones # function echoc() { case $2 in "red") echo -n "^[[01;31m" ;; "green") echo -n "^[[01;32m" ;; "blue")
Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

echo -n "^[[01;34m" esac ;;

echo -n $1 if test $3 = 1 then echo -n "^[[00m" else echo "^[[00m" fi } # # function comp() { echoc "[" "blue" "1" echo -n " " if test $1 = 0 then echoc "OK" "green" "1" else echoc "!!" "red" "1" fi echo -n " " echoc "]" "blue" "0" } # Main echo "Por favor, encienda la cmara y pngala en modo [|>]" echo -n "Pulse una tecla para continuar" read -n1 echo "." echo -n "Montando la cmara... " mount /camara 2>&1 > /dev/null comp $? echo "Copiando imgenes a /home/sergio/camara... " for i in /camara/dcim/100nikon/*.jpg do NUEVO_NOMBRE=`basename $i | sed s:dscn:$DIRECTORIO_SALIDA:g` echo -n " $i -> $NUEVO_NOMBRE... " cp $i $NUEVO_NOMBRE comp $? done echo -n "Desmontando la cmara... " umount /camara 2>&1 > /dev/null comp $? if [ `/etc/init.d/samba status | awk '{print $3}'` != "started" ] then echo "Iniciamos samba... " /etc/init.d/samba start 2>&1 >/dev/null comp $? else echo "Samba ya est iniciado." fi echo "Ya puede apagar la cmara con seguridad"

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Ejemplo4:
# Visualizar los parmetros del 6 al 14 function() { shift 5 echo $1 $2 $3 $4 $5 $6 $7 $8 $9 } ## main ## funcion 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Ejemplo5:
#!/bin/sh #"while test $# != 0 ", lo mismo que abajo while [ $# != 0 ] do echo argumento $1; shift; done Esto muestra los parmetros ingresados. El comando shift hace un corrimiento de los parmetros hacia el anterior.

Formatear disquetes en Linux

En el entorno grfico tenemos varias herramientas para formatear disquetes: Kfloppy (paquete kfloppy): utilidad para formatear disquetes de KDE.

Gfloppy (paquete gnome-utils): formateador de disquetes de GNOME.

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Unidades de disco en Linux


Acceder a unidades de disco: para acceder a una unidad de disco (particin, CD, disquete, unidad de red o imagen), hay que montarla con el comando mount. Su sintaxis es: #mountt<file_sustem><dispositivo><directorio> Por ejemplo: a) Para montar una particin FAT de Windows: #mounttvfat/dev/hda1/mnt b) Para montar un disquete MS-DOS: #mounttmsdos/dev/fd0/media/floppy c) Para montar el CD: #mounttiso9660/dev/cdrom/media/cdrom d) Para montar un CD-RW haremos: #mounttudf/dev/cdrom/media/cdrom Desmontar las unidades: antes de sacar el disquete o el CD debemos desmontarlo:

#umountdispositivo Si sacamos el disquete sin desmontarlo puede que el kernel no haya volcado los ltimos cambios, con lo que perderemos esos datos.

En el entorno grfico tenemos el programa KDiskFree

Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Buscar archivos en Linux


En el shell tenemos varios comandos para buscar archivos por nombre, ubicacin o propiedades: find: buscar un archivo. locate: busca en la base de datos de archivos creada por updatedb. En el entorno grfico tenemos varios frontales para estos comandos: Kfind (paquete kfind): herramienta de bsqueda de KDE.

GNOME-search-tool (paquete gnome-utils): herramienta de bsqueda de GNOME.

Ejercicios propuestos
Script

17

Lic. Rafael Francia

Script

Shell Script

[CAP 1]

Ejercicio N 1 Crear los siguientes scripts. NOTA: cada script que funciona vale dos puntos 1.- Realiza un script llamado visualizador, que al llamarlo tengamos que ponerle la direccin absoluta de un archivo. Si existe, lo debe visualizar en la pantalla, si no existe, debe aparecer en la pantalla la frase: lo siento ese archivo no existe. 2.- Realiza un script llamado compara, cuando lo llamemos, nos pedir que introduzcamos una palabra, una vez introducida, nos pedir otra. Luego comparara esas dos palabras y nos deber indicar si las palabras introducidas son iguales o no. 3.-Realizar un script llamado curriculum, que al llamarlo solicite que escribas un nombre, luego un apellido, luego un ao de nacimiento. Despus de introducir lo anterios, debe escribir: Usted se llama nombre apellido y tiene aos aos 4.-Crea un script llamado papelera, que al llamarlo tengamos que ponerle un parmetro que ser el nombre de un archivo, de tal manera que ese archivo lo copiara en una carpeta llamada /home guardar. 5.- Realiza un script llamado pitagoras, que al llamarlo nos pide, primero un valor, despus de introducirlo, nos pedir otro valor y luego realizara el teorema de Pitgoras con estos valores. 6.- Realiza un script llamado clave, al llamarlo nos pedir que introduzcamos una palabra. Si la palabra introducida es sesamo, nos debe visualizar el archivo /etc/passwd, si no se acierta la palabra debe escribir : Lo siento no esta autorizado 7.- Cree un script llamado media, que al llamarlo tengamos que ponerle tres parmetros numricos y nos devuelve lo siguiente: a) Si 0<promedio<10 aparece el mensaje: MUY MAL, HAZ DESAPROBADO a) Si 10<promedio<15 aparece el mensaje: BIEN, HAZ APROBADO a) Si 15<promedio<20 aparece el mensaje: EXCELENTE, HAZ APROBADO 8.- Crear un programa que te permita comprimir y descomprimir carpetas con los formatos .tar.bzip2, tar.gzip y zip. Establece las condiciones para que funcione adecuadamente el programa. 9.- Realiza un script llamado grande, que al llamarlo tengamos que ponerle la direccin absoluta de un archivo si el archivo introducido es mayor que 200 bytes, debe escribir El archivo es demasiado grande. Si el archivo es menor debe visualizarlo con cat. 10.- Hacer un men que muestre:

(1) Comprimir (.tar.bz2)


(2) (3) (4) (5) (6) Puertos FTP, DNS, mysql, proxy Iniciar Telnet Permisos de ifcfg-eth0 Buscar un archivo Terminar

El programa debe funcionar para cada una de las opciones que muestra el men. Para cada opcin(1,2,3,4,5,6) agregar los comandos de linux que haga que funcione adecuadamente el men que se muestra arriba.

Script

17

Lic. Rafael Francia

También podría gustarte