PDF de programación - Shell scripts con Bourne Shell

Imágen de pdf Shell scripts con Bourne Shell

Shell scripts con Bourne Shellgráfica de visualizaciones

Publicado el 26 de Noviembre del 2018
997 visualizaciones desde el 26 de Noviembre del 2018
18,8 KB
11 paginas
Creado hace 24a (21/04/2000)
SHELL SCRIPTS CON BOURNE SHELL

Gerardo Travesedo

http://personal2.redestb.es/traque

Creación de comandos y programas usando el shell
Creación y ejecución de shell scripts simples
Programación con Bourne Shell

Pasando argumentos al shell
Manejo de variables
Entrecomillados y caracteres especiales
Leer de la entrada standard
Instrucciones condicionales

La instrucci ón if
El operador &&
El operador ||

Comprobaci ón de ficheros y variables con el comando test
Instrucciones de control



La instrucci ón case
La instrucci ón for
Las instrucciones while y until
Las instrucciones break y continue

Mas funciones shell

Aritméticas
Incluir texto en un shell script
Forzar la evaluaci ón de comandos
Ejecutar un comando sin crear un nuevo proceso
Tratar las señales del sistema operativo
Funciones creadas por el programador

Depuraci ón de shell scripts

CREACION DE COMANDOS Y PROGRAMAS USANDO EL SHELL

Ademas de usar el shell para ejecutar comandos, puedes usar su lenguaje de programación para escribir tus
propios comandos o programas. Puedes poner comandos en el fichero (conocido como shell script) y despues
ejecutar el fichero como un comando o programa.

EL Bourne shell (sh) está disponible en todos los sistemas UNIX. Los scripts del Bourne shell tambien
pueden trabajar bajo el Bourne Again Shell (bash). Los shells C y TC usan un lenguaje de programación
similar al lenguaje C.

CREACION Y EJECUCION DE SHELL SCRIPTS SIMPLES

Para crear un shell script simple, debes poner lineas de comando en un fichero, ponle los permisos de acceso
apropiados y despues ejecuta el fichero.

EJEMPLO :

Este es el contenido de un shell script llamado display :

cat display
# Este script displaya la fecha, hora, nombre de
# usuario y directorio actual
echo "Fecha y hora:"
date
echo
echo "Tu usuario es: `whoami` \\n"
echo "Tu directorio actual es: \\c"
pwd

Las primeras dos lineas que comienzan con una almoadilla (#) son comentarios y no son
interpretadas por el shell. Usa comentarios para documentar tu shell script, te sorprenderá saber lo
fácil que es olvidar lo que hacen tus propios programas.

Las backquotes (`) entre el comando whoami ilustran el uso de la sustitucion de comandos.

- sustitución de comandos : para incluir la salida de un comando dentro de una linea de comandos
de otro comando, encierra el comando cuya salida quieres incluir, entre backquotes (`)

- whoami : displaya el usuario actual

\\n es una opción del comando echo que dice al shell que añada un retorno de carro al final de la
linea. \\c dice al shell que permanezca en la misma linea.

(si utilizas el shell bash, para que funcionen estas opciones tienes que poner echo -e )

Antes de usar el fichero como shell script debemos cambiar los permisos de acceso. Para dar
permiso de ejecución al fichero deberemos usar el comando :

chmod u+rwx display

El +rwx despues de la u te permiten leer, escribir y ejecutar el script, nadie mas tendrá permiso para
hacerlo.

Para dar permiso a otros usuarios para leer y ejecutar el shell script usa :

chmod go+rx display

PROGRAMACION CON BOURNE SHELL

El shell tambien te ofrece un entorno de programación con características similares a las de los lenguages de
programación de alto nivel.

PASANDO ARGUMENTOS AL SHELL
Los shell scripts pueden actuar igual que los comandos standard de Unix y tomar argumentos
desde la linea de comandos.

La forma de pasar estos comandos es con los parámetros posicionales $1 hasta $9. Cada
parámetro corresponde a la posición del argumento en la linea de comandos.

El parámetro posicional $0 hace referencia al nombre del comando o nombre del fichero
ejecutable que contiene el shell script.

Solo se pueden pasar nueve argumentos, pero se puede acceder a mas de nueve usando el
comando shift. Cada vez que se ejecuta el comando shift el argumento 1 desaparece, el 2 se
convierte en el uno, y así sucesivamente hasta el 9 que se convierte en el 8 quedando aquel libre.

Se puede hacer referencia a todos los parametros que se estan pasando usando el parámetro

especial $*. Esto es especialmente útil cuando se pasan nombres de ficheros como argumentos,
por ejemplo :

cat printps
# Este script convierte ficheros ASCII a PostScript
# y los envia a la impresora PostScript ps1
# Usa la utilidad local "a2ps"
a2ps $* | lpr -Pps1

printps elm.txt vi.ref msg

Ejemplo de paso de argumentos :

cat first_5args
# Este script lista los cinco primeros argumentos
echo Los cinco primeros argumentos de la linea
echo de comandos son $1 $2 $3 $4 $5

first_5args mines a pint john o.k.

MANEJO DE VARIABLES

Existen algunas variables que se establecen automáticamente con tu login.

Los valores de algunas de estas variables esta guardados en nombres los cuales colectivamente
son llamados 'tu entorno de usuario'.

Cualquier nombre definido en tu entorno de usuario, puede se accedido por un shell script. Para
incluir el valor de una variable shell en tu entorno debes exportarla.

(Si se modifica el valor de una variable, este permanece hasta que efectuas el logout del sistema
o sales del shell en el cual estas trabajando. Para hacer que otros programas que usan la variable
tengan consciencia del cambio debes teclear el comando export variable).

Algunas variables establecidas internamente por el shell y que están disponibles para el usuario:

$1 - $9 parámetros posicionales
$0 nombre del comando actual
$# número de parámetros 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 invocación del shell.
$* un string que contiene todos los
argumentos del shell comenzando por el $1.
$@@ igual que el anterior, excepto cuando va
entrecomillado.

Reglas que goviernan la evaluación de variables shell :

$var significa el valor de la variable
o nada si la variable no está
definida.

${var} igual que el anterior excepto que

las llaves contienen el nombre de
la variable a ser sustituida.

${var-thing} valor de var si var está
definida, si no thing.

${var=thing} valor de var si var está
definida, si no thing y
el valor de var pasa a ser thing

${var?message} Si definida, $var; si no, imprime
el mensaje y terminal el shell.
Si el mensaje esta vacio imprime
un mensaje standard.

${var+thing} thing si $var esta definida, si
no nada.

ENTRECOMILLADOS Y CARACTERES ESPECIALES

Caracteres especiales para terminar palabras :

; & ( ) | ^ < > nueva-linea espacio tab

Para entrecomillar estos usa el backslsh (\) o llaves con comillas.

Comillas simples :

Entre comillas simples todos los caracteres son entrecomillados incluido
el backslash

grep : ${gid}: /etc/group | awk -F: '{print $1}'

Dobles comillas :

Entre dobles comillas se produce sustitución de variable (el signo del
dolar se interpreta) pero no generación de fichero ( * y ? son
entrecomillados)

Comillas contrarias :

Las comillas contrarias significan ejecutar el comando y sustituir por la
salida.

TODAY=`(set \`date\`; echo $1)`

LEER DE LA ENTRADA STANDARD.

Para leer de la entrada standard se utiliza el comando read, por ejemplo :

echo "Por favor introduzca su nombre:"
read nombre
echo "Bienvenido $nombre"

echo "Introduce tu apellido\n"
echo "seguido de tu nombre: \c"
read apellido nombre
echo "Bienvenido a Madrid $nombre $apellido"

Entrada standard : la fuente de información para un comando. Por defecto es el teclado a menos
que se redireccione a un fichero o a otro comando.

Para redireccionar la entrada o salida standard se usa :

cambiar la entrada = < mail gerardo < documento
cambiar la salida = > grep gerardo /etc/passwd > mi_passw
añadir a la salida = >> cat parte2 >> mi_libro

Tambien se pueden utilizar pipes. Unix permite enlazar dos o mas comandos usando un pipe. El
pipe toma la entrada standard de la salida estandard de otro comando. La | (barra vertical) se usa
para representar la conexión de los comandos.

Ejemplos :

who | wc -l
342

Este comando dice cuantos usuarios estan conectados al sistema.
who saca por la salida standard una lista de usuarios conectados al sistema
wc -l cuenta el numero de lineas de la entrada standard y lista el resultado.

ps -aux|grep joe|sort +5 -6|less

El primer comando ps -aux saca informaci
actualmente. Esta informaci ón entra a la entrada del comando grep joe que busca
una linea que contenga el usuario ?joe?. La salida de este comando se clasifica por el
sexto campo de cada linea y esta salida se displaya en el less.

ón sobre los procesos que corren

INSTRUCCIONES CONDICIONALES

Cada comando Unix retorna un valor de salida el cual puede ser consultado. Este valor está
guardado en la variable de solo lectura $?. El valor 0 es bueno, cualquier otro es malo.

La instrucci ón if usa el status del último comando y condicionalmente ejecuta la siguiente
instrucción. La sintáxis general es :

if test
then
comandos
else
comandos
fi

then, else, y fi son palabras reservadas y como tales unicamente serán reconocidas despues de
una nueva linea o ;(punto y coma). Asegurate de que terminas cada if con su fi correspondiente.

El if se
  • Links de descarga
http://lwp-l.com/pdf14338

Comentarios de: Shell scripts con Bourne Shell (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad