Transcript
8/17/2019 manual de shell Script
1/16
1
SHELL SCRIPT EN LINUX
UNIVERSIDAD PRIVADA ANTENOR ORREGO
Ing. Jorge Jara
Ing. Jorge Jara
• Introducción a la programación en Shell
• Fundamentos de programación con Shell Script
• Comparación de expresiones• Estructura de control de flujo condicional
• Estructura de control de flujo iterativo
CONTENIDO
8/17/2019 manual de shell Script
2/162
Ing. Jorge Jara
INTRODUCCIÓN A LA PROGRAMACIÓN EN SHELL
• Definición de un Shell Script
• Importancia de los Shell Script
• Cómo se ejecuta un Shell Script
• Creación y ejecución de Shell Scripts
Ing. Jorge Jara
Definición de un Shell Script
• Shell Script es un grupo de comandos escritos en un
archivo de texto.
• La programación de la Shell consiste en automatizar
ciertas tareas del entorno del interprete de comandos
que son de utilidad para el usuario.
• Los Scripts pueden contener variables, comandos de
e/s, sentencias condicionales e iterativo.
• Los Scripts hacen uso de redireccionadores, los
cuales permiten transferir el flujo de e/s de un
comando a otro comando.
8/17/2019 manual de shell Script
3/163
Ing. Jorge Jara
Importancia de los Shell Script
• Útil para crear nuestros propios comandos.
• Permite ahorrar tiempo.
• Automatiza algunas tareas del trabajo diario.
• Parte de la administración del sistema puede ser
automatizada.
Ing. Jorge Jara
Cómo se ejecuta un Shell Script
• Usar algún editor como por ejemplo vi para escribir
shell script.
• Después de guardar el shell script, asignar el permiso
execute para tu script como sigue:
chmod +x nombre-script
• Ejecutar tu script, como por ejemplo:
./nombre-script
8/17/2019 manual de shell Script
4/164
Ing. Jorge Jara
Creación y ejecución de Shell Scripts
$ vi ejemplo1## Mi primer shell script#clearecho “ Hola Mundo………."
• Guardar el script, luego asignarle el permiso respectivo
y finalmente ejecutar el script como sigue:
$ ./ejemplo1
Ing. Jorge Jara
Comandos del Script Descripción
$ vi ejemplo1 Inicia el editor vi
#
# M i primer shell script#
# seguido por cualquier texto es
considerado como un comentario. Los
comentarios proveen más información
acerca de un script, explicación lógicasobre un shell script.
Sintaxis:
# comentario
clear Limpia la pantalla
echo “ Hola Mundo..........."
Para imprimir mensajes o valores de
variables en pantalla, usamos el comando
echo , La forma general del comando echo
es: echo "Mensaje"
8/17/2019 manual de shell Script
5/165
Ing. Jorge Jara
FUNDAMENTOS DE PROGRAMACIÓN CON SHELL SCRIPT
• Manejo de variables en Shell
• Parámetros posiciónales
• Entrecomillado
• Expresiones aritméticas
• Lectura de datos desde la entrada estándar
Ing. Jorge Jara
Parámetros posicionales
• Es posible escribir un shell script que tome un número
de parámetros desde la línea de comandos, estas
opciones se las proporciona Linux al programa shell
como parámetros posicionales.
• 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 línea de
comandos.
8/17/2019 manual de shell Script
6/166
Ing. Jorge Jara
• El parámetro posicional $0 hace referencia al nombredel 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
shif t. 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 8quedando aquel libre.
Ing. Jorge Jara
Manejo de variables en Shell
Las variables se pueden englobar en tres tiposprincipales:
• Variables de entorno
• Variables incorporadas• Variables de usuario
8/17/2019 manual de shell Script
7/167
Ing. Jorge Jara
Variables de entorno
• Creadas y mantenidas por Linux. Este tipo de variables son
definidas en LETRAS MAYUSCULAS.• Ejemplos de variables de entorno:
Variables de Entorno DescripciónBASH=/bin/bash Nombre del shell
BASH_VERSION=1.14.7(1) Nombre de la versión del shell
HOME=/home/sisope Directorio home
LOGNAME=sisope Nombre de Inicio de sesión
OSTYPE=Linux Tipo de Os
PATH=/usr/bin:/sbin:/bin:/usr/sbin Ruta establecida PWD=/home/sisope/Jorge Directorio de trabajo actual
SHELL=/bin/bash Nombre del shell
USERNAME=sisope Nombre de Usuario que hainiciado sesión en esta PC
Ing. Jorge Jara
• Si se modifica el valor de una variable, este permanece
hasta que efectúas el logout del sistema o sales del
shell en el cual estas trabajando.
• Para mostrar el valor de una variable, usar el comando
echo seguidos por el signo dollar($) y el nombre de la
variable. Es decir si el nombre de la variable es
SHELL, puede mostrar el valor de la variable usando:
echo $SHELL
• Para asignar un valor a una variable:
myname=jorge
8/17/2019 manual de shell Script
8/168
Ing. Jorge Jara
Variables incorporadas (Built in)
• Las variables incorporadas son unas variables especiales
proporcionadas por el sistema Linux, a diferencia de las
variables de entorno, no se pueden modificar.
• Algunas de estas variables son:
Variables
Built in Descripción
$# Números de parámetros posicionales
$* Una cadena de todos los argumentos pasados en el
momento que se invoca el programa shell.
$@ Lo mismo que el anterior $0 El nombre del programa shell
$$ PID del shell
$! PID del ultimo comando ejecutado en el background
(iniciado con &)
Ing. Jorge Jara
• Ejemplo de variables incorporadas, aquí tiene un programa
llamado ejemplo2:
#mi programa de prueba
echo “El número de parámetros es ” $#
echo “El nombre del programa es ” $0
echo “Los parámetros como una sola cadena es ” $*
Ejecutar ejemplo2 desde la línea de comandos de la siguiente manera:
./ejemplo2 jorge silena
Se obtendrá el siguiente resultado:
El número de parámetros es 2
El nombre del programa es ejemplo2
Los parámetros como una sola cadena es jorge silena
8/17/2019 manual de shell Script
9/169
Ing. Jorge Jara
Variables de usuario
• Para usar variables definidas por el usuario usar lasiguiente sintaxis: nombre_variable=valor
• Por ejemplo:
nro=10
Ing. Jorge Jara
Entrecomillado
• Unos cuantos caracteres se merecen una nota especial. Son las comillas
doble ( “ ), las comillas simples ( ’ ) y el acento inverso ( ´ ).
Comillas Nombre Descripción
" Comillas Dobles
• Si una cadena contieneespacios incrustados, puedeacercar la cadena en unascomillas dobles.
• Resuelven todas las variablesdentro de una cadena.
' Comillas Simples Para hacer que el shell deje deresolver una variable.
` Acento inversoPuede usar un acento inverso ( ` )
para que el resultado de la
ejecución de un comando se
almacene en una variable.
8/17/2019 manual de shell Script
10/1610
Ing. Jorge Jara
Expresiones aritméticas• El comando expr evalúa sus argumentos considerándolos como
una expresión y escribe el resultado sobre la salida estándar.• Sintaxis: expr variable operador variable
• Donde los operadores son:
suma +
resta -
multiplicación *
división /
resto %
• Ejemplo 1: expr 13 + 49
El resultado de esta expresión es: 62
• Ejemplo 2: echo `expr 6 + 3`
Ing. Jorge Jara
Lectura de datos desde la entrada estándar
• Para leer de la entrada estándar se utiliza el comando
read.
• Ejemplo 3:
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: $nombre $apellido“
8/17/2019 manual de shell Script
11/1611
Ing. Jorge Jara
Ejercicios• Definir una variable vn con el valor jorge e imprimirlo por
pantalla.
• Como definir dos variables x=40, y=8 y luego imprimir el
resultado de la división de x e y.
• Modificar el ejercicio anterior y guardar el resultado de la división
de x e y en una variable z.
• Crear un script que permita mostrar el número de parámetros,
nombre del script y los nombres de cada uno de los parámetros
posiciónales pasados desde la línea de comandos.
• Elaborar un script que muestre en pantalla la hora actual, la
fecha, el nombre de inicio de sesion del usuario y el directorio
actual.
Ing. Jorge Jara
COMPARACIÓN DE EXPRESIONES
• Comparación de cadenas
• Comparación de números
8/17/2019 manual de shell Script
12/1612
Ing. Jorge Jara
Comparación de cadenas
Se pueden usar los siguientes operadores para comparar dos
expresiones de cadenas:
Operador Descripción
string1 = string2 string1 es igual a string2
string1 != string2 string1 no es igual a string2
string1 string1 no está vacía
-n string1
Evalúa si la longitud de string1 es
mayor que cero
-z string1Evalúa si la longitud de string1 esigual a cero
Ing. Jorge Jara
Comparación de númerosSe pueden usar los siguientes operadores para comparar dos
números:
OperadorMatemático
Descripción Uso de
test con elcomando if
Uso de [expr]con el
comando if
-eq 5 == 6 if test 5 -eq 6 if [ 5 -eq 6 ]
-ne 5 != 6 if test 5 -ne 6 if [ 5 -ne 6 ]
-lt 5 < 6 if test 5 -lt 6 if [ 5 -lt 6 ]
-le 5 6 if test 5 -gt 6 if [ 5 -gt 6 ]
-ge 5 >= 6 if test 5 -ge 6 if [ 5 -ge 6 ]
8/17/2019 manual de shell Script
13/1613
Ing. Jorge Jara
ESTRUCTURA DE CONTROL DE FLUJO CONDICIONAL
La declaración if
La declaración if evalúa una expresión para tomar unadecisión. Una condición if tiene el siguiente formato:
if [ expresión ] ; then
Declaraciones
elif [ expresión ] ; then
Declaraciones
elseDeclaraciones
fi
Ing. Jorge Jara
La declaración case
Se puede usar una declaración case en lugar de unadeclaración if si se tiene un gran número de condiciones.
case $nombre-variable in
patron1 | patron2)Declaraciones;;
patron3 | patron4)
Declaraciones;;
*)
Declaraciones;;
esac
8/17/2019 manual de shell Script
14/1614
Ing. Jorge Jara
ESTRUCTURA DE CONTROL DE FLUJO ITERATIVO
La declaración for
La declaración for dispone del siguiente formato:
for nombre _ variable in lista
do
declaraciones
done
Ing. Jorge Jara
La declaración while
La declaración while se puede usar para ejecutar unaserie de comandos mientras una condición es verdadera
while [ condición ]do
declaraciones
done
8/17/2019 manual de shell Script
15/1615
Ing. Jorge Jara
• Escribir un script que permita determinar si un número es
positivo o negativo.
if [ $1 –gt 0 ]
then
echo "$1 numero es positivo"
else
echo "$1 numero es negativo"
fi
Ejemplos
Ing. Jorge Jara
• Escribir un script que permita mostrar el nombre del mes si le
proporciona el número del mes como parámetro.
case $1 in
01 | 1) echo “El mes es enero”;;
02 | 2) echo “El mes es febrero”;;
03 | 3) echo “El mes es marzo”;;
04 | 4) echo “El mes es abril”;;
05 | 5) echo “El mes es mayo”;;
06 | 6) echo “El mes es junio”;;
07 | 7) echo “El mes es julio”;;
08 | 8) echo “El mes es agosto”;;
09 | 9) echo “El mes es septiembre”;;
10) echo “El mes es octubre”;;
11) echo “El mes es noviembre”;;
12) echo “El mes es diciembre”;;
*) echo “Parámetro no válido”;;
esac
8/17/2019 manual de shell Script
16/16
Ing. Jorge Jara
Ejercicios
• Escribir un shell script que permita sumar dos números, los
cuales son pasados a través de la línea de comandos.
• Escribir un script que imprima la siguiente lista de números 5, 4,
3, 2, 1.
• Escribir un script que imprima todos los divisores de un número
pasado como argumento.
top related