¿En qué podemos ayudarte?
Estructuras de validación
Introducción a los scripts
La mayoría de los scripts de preferencia deben ser escritos con los editores emacs, gedit, entre otros. Al igual asignarles permisos de ejecución para la escritura y ejecución, con un:
chmod 755 nombre_script.sh
Para la ejecución de un script, sólo bastará con lanzarlo de la siguiente manera desde la ruta relativa en la que se encuentra.
./nombre_script.sh
/home/usuario1/scripts/nombre_del_script.sh
el contenido del script de prueba será una simple impresión en pantalla con un Hola mundo
#! /bin/bash
echo "Hola mundo"
lo guardaremos como hola_mundo y lo ejecutaremos como previamente se vio.
Video: Introducción a Bash
En este video veremos una breve introducción a Bash, permisos de ejecución, entre otros.
Validación. IF
if es la instrucción que nos permite condicionar que un script siga un proceso o no, por defecto todas las validaciones verdaderas en sistemas Linux regresan un 0, en caso contrario mandarán algún número positivo del 1 al 255.
La estructura básica para la condición if es:
if commands; then commands [elif commands; then commands...] [else commands] fi
en donde commands son las instrucciones que se llevarán acabo.
Toda validación con if debe termina con fi, más puede incluir varias validaciones de forma interna por medio de elif y en el caso de que ninguna condición se cumpla con else se dirigirá el flujo del programa hacia allá.
Por ejemplo:
Esta condicional nos permitirá saber si el usuario cuenta con un archivo .bash_profile
if [ -f .bash_profile ]; then echo "Si existe .bash_profile." else echo "No cuenta con .bash_profile!" fi
la condicional entre corchetes (es un operador que se llama test y permite saber si una validación es verdadera o falsa) permite conocer por medio de la bandera -f si el archivo .bash_profile es un archivo regular, en caso de ser verdadero imprimirá en pantalla “Si existe .bash_profile.”, en caso contrario “No cuenta con .bash_profile!”.
Se pueden hacer diversas condiciones algunas de ellas son:
Expresión | Descripción |
---|---|
-d file | “true” si file es un directorio. |
-e file | “true” si file existe. |
-f file | “true” file es un archivo regular. |
-L file | “true” file es una liga suave. |
-r file | “true” si su usuario cuenta con permisos de lectura a file. |
-w fil | “true” si su usuario cuenta con permisos de escritura a file. |
-x file | “true” si su usuario cuenta con permisos de ejecución a file. |
file1 -nt file2 | “true” si file1 es más nuevo que file2 (basado en la fecha de modificación) |
file1 -ot file2 | “true” si file1 es más viejo que file2. |
-z string | “true” si string es una cadena vacía. |
-n string | “true” si string no es una cadena vacía. |
string1 = string2 | “true” si string1 es igual a string2. |
string1 != string2 | “true” si string1 no es igual a string2.7 |
Video: Ejemplo del uso de If-elif-else
El programa de ejemplo puede ser copiado desde aquí:
#! /bin/bash
# Copyright (c) 2015, J. Daniel Cordero
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# echo "He terminado!"
if [[ -f file.txt ]]; then
echo "Si existe file.txt"
else
echo "No existe file.txt"
fi
ls -lha . > file.txt