0% encontró este documento útil (0 votos)
20 vistas10 páginas

Manual Referencia Shell Script

Este documento describe la programación de shell en Linux. Explica comandos como echo, read, variables, parámetros posicionales, shift, expr y test para trabajar con cadenas, números y archivos. También cubre estructuras de control como if, case, while, until y for para crear bucles y condicionales en los scripts de shell. El objetivo es proporcionar una introducción a la programación en shell y los conceptos y herramientas básicas disponibles.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
20 vistas10 páginas

Manual Referencia Shell Script

Este documento describe la programación de shell en Linux. Explica comandos como echo, read, variables, parámetros posicionales, shift, expr y test para trabajar con cadenas, números y archivos. También cubre estructuras de control como if, case, while, until y for para crear bucles y condicionales en los scripts de shell. El objetivo es proporcionar una introducción a la programación en shell y los conceptos y herramientas básicas disponibles.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Programación de la shell 1

TEMA 3

PROGRAMACIÓN DE LA SHELL

1 INTRODUCCIÓN ................................................................................................................ 2
2 ECHO .................................................................................................................................... 2
3 TRABAJANDO CON VARIABLES ................................................................................... 2
3.1 ASIGNAR VALORES A VARIABLES ...................................................................... 2
3.2 READ ............................................................................................................................ 2
3.3 VARIABLES ESPECIALES O INTERNAS................................................................ 3
4 PARÁMETROS POSICIONALES....................................................................................... 3
5 SHIFT .................................................................................................................................... 4
6 EXPR..................................................................................................................................... 4
7 TEST ..................................................................................................................................... 5
7.1 CADENAS CON VALORES NUMÉRICOS. .............................................................. 5
7.2 SOBRE CADENAS DE CARACTERES ..................................................................... 6
7.2.1 VERIFICA SI DOS CADENAS SON O NO IDENTICAS. .................................... 6
7.2.2 VERIFICA LA LONGITUD DE UNA CADENA. .................................................. 7
7.3 SOBRE TIPOS DE FICHEROS: .................................................................................. 7
8 COMANDO IF ...................................................................................................................... 8
9 COMANDO CASE ............................................................................................................... 8
10 COMANDO WHILE ............................................................................................................ 9
11 COMANDO UNTIL ........................................................................................................... 10
12 FOR ....................................................................................................................................... 9
13 BREAK, CONTINUE Y EXIT ........................................................................................... 10
Programación de la shell 2

1 INTRODUCCIÓN
El shell es un intérprete de órdenes, pero no sólo es eso ya que los intérpretes de órdenes de
UNIX son auténticos lenguajes de programación. Como tales, incorporan sentencias de control
de flujo, sentencias de asignación, funciones etc. Los programas de shell no necesitan ser
compilados, en este caso el propio shell los interpreta línea a línea. A estos programas se les
conoce con el nombre de shell script.
La forma de escribir un programa de shell consiste en crear un archivo de texto con un editor (por
ejemplo, editor vi). Este archivo contendrá las órdenes que el shell va a ir interpretando y
ejecutando. Una vez que tenemos el archivo de texto es necesario darle al archivo el atributo de
ejecución para ello hay que emplear la orden chmod.
Este lenguaje se caracteriza por:
 Maneja variables.
 Dispone de instrucciones que manejan bucles.
 Permite parámetros de sustitución.
 Se pueden utilizar los comandos de Unix dentro de los programas.

2 ECHO
echo [-n] [cadena]
Sirve para visualizar cadenas de caracteres
Opciones:
-e Interpreta los siguientes códigos
\c Evita el salto de línea.
$ echo –e “Hola $nom:\c”
\n Inserta un salto de línea.
$echo –e “Buenos \n días”
\t Inserta un salto de tabulador.

3 TRABAJANDO CON VARIABLES


3.1 ASIGNAR VALORES A VARIABLES
Nombre = valor
$ a=10
$ echo $a
3.2 READ
read var1 var2 ...
Permite la introducción de valores desde el teclado o provenientes desde un fichero
almacenando los valores en una variable indicada.
$ leer
echo “Introduzca nombre: “
read nom
echo “ Introduzca apellido:“
Programación de la shell 3

read ape
echo $nom
echo $ape
echo “Introduzca nombre y apellidos: “
read n a
echo $n $a >>personas

3.3 VARIABLES ESPECIALES O INTERNAS


Son variables del sistema y no las puede modificar el usuario. Son variables generadas por el
shell al lanzar la ejecución de un programa. Las variables son:
$# Nos da el número de parámetros o argumentos que hay en la línea de orden cuando
llamamos la programa.
$* Da el conjunto de todos los parámetros posicionales (excluye el nombre del programa) de
la línea de orden separados por un blanco, es decir una cadena que contiene todos los
parámetros excepto el nombre del programa.
$? Da el valor de retorno de la última orden ejecutada. Si da 0 es que se ejecutó con éxito.
$$ Nos da el PPID.
$! Nos da el PID.
$variables uno dos tres cuatro
########################################################################
#El programa llamado variables visualiza los valores de las variables especiales del shell #
#Para ejecutarlo primero tiene que tener permiso de ejecución #
#y debe introducir el n° de parámetros que considere adecuado #
########################################################################
echo la variable \# vale: $#
echo la variable \* vale: $*
echo la variable \? Vale: $?
cp
echo la variable \? vale: $?

4 PARÁMETROS POSICIONALES
Toman valores externos al programa. Cuando se llama a un programa, el shell referencia
el nombre del programa ($0), al argumento1 ($1) ... hasta el argumento9 ($9). El shell utiliza unas
variables ($0,$1...$9) para referirse a cada argumento que pasado al programa.
$ cat fich1 fich2
$0 $1 $2
$ renombrar

clear
Programación de la shell 4

echo “Aceptar nombre fichero:”


read fichantiguo
echo “Aceptar nuevo nombre fichero:”
read fichnuevo
mv $fichantiguo $fichnuevo
$ renombrar fichantiguo fichnuevo
mv $1 $2

5 SHIFT
Se utiliza para cuando necesitamos utilizar más de 9 argumentos. Este comando nos
permite desplazar el contenido de los argumentos una posición hacia la izquierda.
$ desplazar uno dos tres cuatro
clear echo $1 $2 $3 echo la
variable \* vale: $* echo la
variable \# vale: $# shift
echo $1 $2 $3
echo la variable \* vale: $*
echo la variable \# vale: $#

6 EXPR
Las variables en el shell son alfanuméricas y para trabajar con numéricas recurrimos a
esta orden. Admite los siguientes operadores:
Operadores aritméticos
+ - * / %
Hay que tener en cuenta lo siguiente:
 Sólo admite números enteros naturales.
 Hay que dejar espacio entre la expresión y entre los términos.
 Cuando se quiera cambiar la precedencia de los operadores hay que introducir ( )
 Los símbolos: *, (, ) tienen un significado especial para el shell, por lo que deben ser
precedidos por el símbolo \
$ operaciones
echo Multiplicacion de dos variables
echo Introduce la primera variable:
read arg1
echo Introduce la segunda variable:
read arg2
resultado=`expr $arg1 / $arg2`
echo $resultado
Programación de la shell 5

echo `expr $arg1 % $arg2`


resultado=`expr $arg1 \* $arg2`
echo $resultado
Operadores relacionales
= != > >= < <=
Estos operadores se utilizan para comparar dos argumentos. Los argumentos pueden ser también
palabras. Si el resultado de la comparación es cierto, el resultado es 1, si es falso, el resultado es
0.
$ comparar
echo ¿Son iguales las variables?
echo “Introduce la primera variable:”
read arg1
echo “Introduce la segunda variable:”
read arg2
resultado=`expr $arg1 = $arg2`
echo $resultado

7 TEST
test expresión
[ expresión ]
Permite evaluar las expresiones y generar un valor de retorno. Cuando se ejecuta test y
retorna un código= 0 la expresión es evaluada como cierta. Cuando retorna un valor distinto de 0
es falsa.

Hay tres clases de comprobaciones:


1. sobre cadenas que contienen valores numéricos
2. sobre cadenas de caracteres
3. sobre tipos de ficheros
Para cada comprobación hay un conjunto de primitivas que describen las opciones a comprobar.

7.1 CADENAS CON VALORES NUMÉRICOS.


test n [primitiva] m
[n primitiva m]
Test comprueba la relación entre dos números que pueden estar representados por variables. m
y n son cadenas o números con caracteres numéricos.
Primitivas:
-eq retorna 0 si los valores son iguales.
-ne m y n no son iguales.
-gt n es > que m.
Programación de la shell 6

-lt n es < que m.


-ge n es >= que m.
-le n es <= que m.
$ comprobar
$ comprobar dato.txt
if [ $# -eq 0 ]
then
echo “hay que teclear un argumento”
else
cat $1
fi

$ comparar

echo “Introduce n1”


read n1
echo “Introduce n2”
read n2
if [ $n1 –gt 0 ]
then
echo “El nº $n1 es positivo”
else
echo “El nº $n1 es negativo”
fi

Las primitivas –gt ... se pueden combinar con operadores lógicos en una expresión test a la
hora de evaluar ficheros, cadenas o números.

Operadores:
-a Se cumple si las dos expresiones se cumplen.
Ej.: if [5 –gt 0 –a 8 –gt 3]
-o Se cumple en caso de que una de las expresiones se cumpla.
Ej.: if [5 –gt 0 –o 8 -gt 3]
! Niega una expresión

7.2 SOBRE CADENAS DE CARACTERES


Test realiza dos tipos de comprobaciones sobre las cadenas de caracteres.
7.2.1 VERIFICA SI DOS CADENAS SON O NO IDENTICAS.

test cad1 [primitiva] cad2


Programación de la shell 7

[cad1 primitiva cad2]

Primitiva:
= Comprueba la igualdad de dos cadenas.
!= Comprueba que son distintas.
echo Introduzca clave
read clave
if [ “$a” = “asdf” ]
then
ls
else
echo clave incorrecta
fi

7.2.2 VERIFICA LA LONGITUD DE UNA CADENA.


test [primitiva] cadena
Si la longitud es 0 la cadena se considera nula. Si la longitud es !=0 la cadena no se considera
nula.

-z La cadena es nula.

7.3 SOBRE TIPOS DE FICHEROS:


test [primitiva] nom_fichero
Permiten verificar la existencia, el tipo y los permisos.
Primitiva
-f Devuelve verdadero (0) si el archivo existe y es un archivo regular (no es un directorio ni
un archivo de dispositivo)
-s Devuelve verdadero (0) si el archivo existe y tiene un tamaño mayor que 0
-d Devuelve verdadero (0) si el fichero es un directorio.
-r Devuelve verdadero (0) si el fichero existe y tiene permiso de lectura.
-x Devuelve verdadero (0) si el fichero existe y es ejecutable.
-w Devuelve verdadero (0) si el fichero existe y tiene permiso de escritura.
$ indicar /etc/passwd
if [ –d $1]
then
echo “es un directorio”
else
if [ –f $1 ]
then
Programación de la shell 8

echo “es un fichero”


else
echo “no es un fichero ni un directorio
fi
fi

8 COMANDO IF
if <condición> if <condición>
then then
<comandos> <comandos>
else elif <condicion2>
<comandos> then
fi <comandos>

else
<comandos>
fi

La sentencia if se utiliza para tomar decisiones a partir de los códigos de retorno,


normalmente devueltos por la orden test.
$ crear nuevodir
if [! –d $1] then
mkdir $1
chmod 700 $1 fi

9 COMANDO CASE
case <variable> in
opción 1) comando1
comandon;;
opcion 2) comando1
comandon;;
*) ninguna de las anteriores
esac
Programación de la shell 9

echo “nombre fichero:”


read fichero
clear
echo “1.- mostrar fichero”
echo “2.- borrar fichero”
echo “3.- renombrar fichero”
read opcion
case $opcion in
1) cat $fichero ;;
2) rm $fichero;;
3) echo “nuevo fichero:”
read nuevofich
mv $fichero $nuevofich;;
*) echo opcion erronea;;
esac

10 FOR
for <variable> in <lista_valores>
do
<comandos>

done
Repite una serie de comandos en función de una condición, es decir, repite tantas veces
como elementos tenga la lista proporcionada.

for i in $@
do
mail $i < carta
done

for i in a b c d
do
echo Valor es $i
done

11 COMANDO WHILE
while condición do
<comandos>

done
Programación de la shell 10

$ mientras uno dos tres cuatro


$ mientras uno dos tres cuatro cinco seis
while [ $# -gt 0 ]
do
cat $1
shift
done

El bucle while también nos permite leer línea a línea un fichero


while read linea
do
echo $linea
done < nombre fichero

12 COMANDO UNTIL
El bucle se ejecuta hasta que se cumple la condición indicada.
until condición
do
<comandos>
done
$ hasta uno dos tres cuatro
$ hasta uno dos tres cuatro cinco seis
until [ $# -eq 0 ]
do
cat $1
shift
done

13 BREAK, CONTINUE Y EXIT


break Hace que cualquier bucle for, while o until termine y pase el control a la siguiente
orden en que se encuentre después de la palabra clave done
continue Detiene la iteración actual del bucle for, while o until y empieza la ejecución de
la siguiente iteración

exit Detiene la ejecución del programa del shell

También podría gustarte