Scripts de Linux
• Script = Guión = Proceso por Lotes
• Tareas repetitivas se pueden agrupar en un guión y
ejecutarse automáticamente (Batch Processing).
• Usaremos un editor de texto plano (por ejemplo gedit).
• Con #! en la primera línea indicamos qué shell debería
interpretar el resto de comandos (/bin/bash).
• Posteriormente escribimos los comandos separados
por saltos de línea.
• Antes de ejecutar el script tendremos que darle al
archivo permiso de ejecución: chmod +x fichero_script
• Para ejecutar el script teclearemos el nombre del
fichero anteponiéndole los caracteres ./
Introducción a los Scripts
- Usamos un editor (por ejemplo gedit) y creamos el fichero
hola.sh:
#!/bin/bash
clear
echo “hola”
- Con #! en la primera línea indicamos qué shell interpretará
el resto de comandos (/bin/bash).
- Posteriormente escribimos los comandos separados por
saltos de línea.
- Le damos permisos de ejecución: chmod +x hola.sh
- Lo ejecutamos: ./hola.sh
Nuestro primer shell script
– Una variable tiene un nombre y un valor, y sirve para dotar de
dinamismo y más potencia a nuestros scripts:
FECHA=”15/07/2004”
echo “Hoy es $FECHA”
– FECHA es el nombre de la variable.
– $FECHA es su valor.
– Para asignar un valor, se utiliza “=”. ¡¡¡SIN ESPACIOS!!
Variables
Existen una serie de variables predefinidas:
Las variables de entorno.Las variables de entorno.
(pueden verse con el comando env)
– Es posible leer del usuario el valor de una variable,
dotando a nuestros scripts de interactividad.
– cat hola.sh
#!/bin/bash
echo “Dime tu nombre:”
read NOMBRE
echo “Hola $NOMBRE, encantado de conocerte”
Variables: interactividad
– Para ejecutarlo tecleamos: ./hola.sh
– Es posible pasar los parámetros o argumentos que
queramos y utilizarlos dentro del script.
– cat nombre.sh
#!/bin/bash
echo “Nombre: $1”
echo “Primer Apellido: $2”
echo “Segundo Apellido: $3”
– ./nombre.sh Juan López Martínez
– ./nombre.sh “Maria Dolores” Pradera Sánchez
– $1, $2, $3... ${10}, ${11},… : argumentos
– $0 es el propio script.
– $#: número de argumentos que nos han pasado.
– $*: todos los argumentos. “$*” = “$1 $2 $3...”
Variables: parámetros o argumentos
Operaciones aritméticas
expr: Permite realizar operaciones aritméticas.
- Sintaxis: expr ARG1 OP ARG2
SUMA=`expr 7 + 5` (ojoespacios!)
echo $SUMA
- A algunos operadores hay que anteponerles una 
P=`expr 7 * 5` (ojo escapar operadores!)
P=`expr ( 7 + 5 ) * 2`
● test “$NOMBRE”==“Juan” (==, !=, >, <, >=, <=)
● test $DINERO –eq 1000 (-eq, -ne, -gt, -lt, -ge, -le)
● test -f /etc/passwd (-f, -d, -l, -r, -w, -x)
● cero = verdadero
● no cero = falso (¡¡AL REVÉS QUE EN C!!)
Condiciones: test
Control del flujo de ejecución
• Alternativa simple: if
• Alternativa múltiple: case
• Bucles repetitivos: while, until, for
Sintaxis:
If condición
then
comandos
else
comandos
fi
Alternativa simple: if
Ejemplo:
If test “$NOMBRE”==“Juan”
then
echo “Hola Juan, ¿qué tal?”
else
echo “No te conozco”
fi
Sintaxis:
case $VARIABLE in
“VALOR1”)
comandos
;;
“VALOR2”)
comandos
;;
*)
comandos
;;
esac
Alternativa múltiple: case
Ejemplo:
case $NOMBRE in
“Juan”)
echo “Hola Juan”
;;
“Pedro”)
echo “Pedreteee!!!!”
;;
*)
echo “no te conozco”
;;
esac
Sintaxis:
while condición
do
comandos
done
Bucle repetitivo while (mientras)
Ejemplo:
N=1
while [ $N –lt 100 ]
do
echo “Vuelta número $N”
N=`expr $N + 1`
sleep 1 # Esperamos 1 segundo
done
Sintaxis:
until condición
do
comandos
done
Bucle repetitivo until (hasta)
Ejemplo:
N=1
until [ $N –ge 100 ]
do
echo “Vuelta número $N”
N=`expr $N + 1`
sleep 1 # Esperamos 1 segundo
done
Sintaxis:
for VARIABLE in LISTA
do
comandos
done
Bucle repetitivo for (para)
Ejemplo 1:
for N in “sopa” “carne” “pan de ajo”
do
echo “Hoy comemos $N”
done
Produce una ejecución repetitiva asignando a una variable
de control valores de una lista.
En la LISTA se define la separación de cada elemento por el
valor de la variable de entorno IFS, que por defecto toma
espacios en blanco, tabuladores y saltos de línea.
Ejemplo 2:
IFS=“:”
echo “Directorios en el path…”
for N in $PATH
do
echo $N
done

Los scripts de linux

  • 1.
  • 2.
    • Script =Guión = Proceso por Lotes • Tareas repetitivas se pueden agrupar en un guión y ejecutarse automáticamente (Batch Processing). • Usaremos un editor de texto plano (por ejemplo gedit). • Con #! en la primera línea indicamos qué shell debería interpretar el resto de comandos (/bin/bash). • Posteriormente escribimos los comandos separados por saltos de línea. • Antes de ejecutar el script tendremos que darle al archivo permiso de ejecución: chmod +x fichero_script • Para ejecutar el script teclearemos el nombre del fichero anteponiéndole los caracteres ./ Introducción a los Scripts
  • 3.
    - Usamos uneditor (por ejemplo gedit) y creamos el fichero hola.sh: #!/bin/bash clear echo “hola” - Con #! en la primera línea indicamos qué shell interpretará el resto de comandos (/bin/bash). - Posteriormente escribimos los comandos separados por saltos de línea. - Le damos permisos de ejecución: chmod +x hola.sh - Lo ejecutamos: ./hola.sh Nuestro primer shell script
  • 4.
    – Una variabletiene un nombre y un valor, y sirve para dotar de dinamismo y más potencia a nuestros scripts: FECHA=”15/07/2004” echo “Hoy es $FECHA” – FECHA es el nombre de la variable. – $FECHA es su valor. – Para asignar un valor, se utiliza “=”. ¡¡¡SIN ESPACIOS!! Variables Existen una serie de variables predefinidas: Las variables de entorno.Las variables de entorno. (pueden verse con el comando env)
  • 5.
    – Es posibleleer del usuario el valor de una variable, dotando a nuestros scripts de interactividad. – cat hola.sh #!/bin/bash echo “Dime tu nombre:” read NOMBRE echo “Hola $NOMBRE, encantado de conocerte” Variables: interactividad – Para ejecutarlo tecleamos: ./hola.sh
  • 6.
    – Es posiblepasar los parámetros o argumentos que queramos y utilizarlos dentro del script. – cat nombre.sh #!/bin/bash echo “Nombre: $1” echo “Primer Apellido: $2” echo “Segundo Apellido: $3” – ./nombre.sh Juan López Martínez – ./nombre.sh “Maria Dolores” Pradera Sánchez – $1, $2, $3... ${10}, ${11},… : argumentos – $0 es el propio script. – $#: número de argumentos que nos han pasado. – $*: todos los argumentos. “$*” = “$1 $2 $3...” Variables: parámetros o argumentos
  • 7.
    Operaciones aritméticas expr: Permiterealizar operaciones aritméticas. - Sintaxis: expr ARG1 OP ARG2 SUMA=`expr 7 + 5` (ojoespacios!) echo $SUMA - A algunos operadores hay que anteponerles una P=`expr 7 * 5` (ojo escapar operadores!) P=`expr ( 7 + 5 ) * 2`
  • 8.
    ● test “$NOMBRE”==“Juan”(==, !=, >, <, >=, <=) ● test $DINERO –eq 1000 (-eq, -ne, -gt, -lt, -ge, -le) ● test -f /etc/passwd (-f, -d, -l, -r, -w, -x) ● cero = verdadero ● no cero = falso (¡¡AL REVÉS QUE EN C!!) Condiciones: test
  • 9.
    Control del flujode ejecución • Alternativa simple: if • Alternativa múltiple: case • Bucles repetitivos: while, until, for
  • 10.
    Sintaxis: If condición then comandos else comandos fi Alternativa simple:if Ejemplo: If test “$NOMBRE”==“Juan” then echo “Hola Juan, ¿qué tal?” else echo “No te conozco” fi
  • 11.
    Sintaxis: case $VARIABLE in “VALOR1”) comandos ;; “VALOR2”) comandos ;; *) comandos ;; esac Alternativamúltiple: case Ejemplo: case $NOMBRE in “Juan”) echo “Hola Juan” ;; “Pedro”) echo “Pedreteee!!!!” ;; *) echo “no te conozco” ;; esac
  • 12.
    Sintaxis: while condición do comandos done Bucle repetitivowhile (mientras) Ejemplo: N=1 while [ $N –lt 100 ] do echo “Vuelta número $N” N=`expr $N + 1` sleep 1 # Esperamos 1 segundo done
  • 13.
    Sintaxis: until condición do comandos done Bucle repetitivountil (hasta) Ejemplo: N=1 until [ $N –ge 100 ] do echo “Vuelta número $N” N=`expr $N + 1` sleep 1 # Esperamos 1 segundo done
  • 14.
    Sintaxis: for VARIABLE inLISTA do comandos done Bucle repetitivo for (para) Ejemplo 1: for N in “sopa” “carne” “pan de ajo” do echo “Hoy comemos $N” done Produce una ejecución repetitiva asignando a una variable de control valores de una lista. En la LISTA se define la separación de cada elemento por el valor de la variable de entorno IFS, que por defecto toma espacios en blanco, tabuladores y saltos de línea. Ejemplo 2: IFS=“:” echo “Directorios en el path…” for N in $PATH do echo $N done