Curso de Linux N17. Programación en Bash 004: Condicionales: Pruebas de archivos y Comparación de cadenas de caracteres

Cordiales Saludos


17_portada.png

Continuamos con el condicional if, ahora con el uso de pruebas de archivos y comparación de cadenas. La prueba de archivo se resume en determinar si un archivo existe; está vacío; es un directorio o es un enlace simbólico. En cuanto a la comparación de cadenas es muy importante dentro de la programación ya que se trabaja con los string, para facilitar o agilizar el tratamiento con cadenas de texto. Estos dos puntos tratados en esta publicación son de suma importancia a la hora de desarrollar nuestros script. Siempre estaremos trabajando con información generalmente en forma de texto estando dentro de una archivo o directorio o por el resultado de la ejecución .


banner_bash.png

Condicionales: Pruebas de archivos

-f: Con esta opción dentro de nuestro condicional podemos determinar si un archivo existe o no. En el siguiente código podemos visualizar su sintaxis: if [[ -f "$1" ]]; then, esta es la forma para evaluar si existe el archivo. En este caso estoy trabajando con $1, porque el script lo estoy ejecutando con un argumento.


17_1.png

Ejecución del código

$ bash script_24.sh script_23.sh 
Determina si un archivo existe
El archivo script_23.sh existe en este directorio
$ bash script_24.sh script_300.sh 
Determina si un archivo existe
No existe en este directorio el archivo script_300.sh

Otra forma de hacer el ejercicio

#!/bin/bash
# Script_24a.sh - Por: Rafael Aquino
# Pruebas de Archivos - Archivo existente
# Para correr el script: bash script_24a.sh
# Ejemplo: bash script_24a.sh
#VAR=script_23.sh
VAR=script_1000.sh
echo "Determina si un archivo existe"
if [[ -f "$VAR" ]]; then
  echo "El archivo $1 existe en este directorio"
else
  echo "No existe en este directorio el archivo $1"
fi


separador_bash.png

-s: Con esta opción dentro de nuestro condicional podemos determinar si un archivo contiene información o no contiene información, es decir, que esté vacío. En esta oportunidad creé un archivo vacío: vacio.txt, dentro del script.


17_2.png

Ejecución del código

$ bash script_25.sh script_23.sh 
Determina si un archivo esta vacío o contiene información
El archivo script_23.sh no esta vacío
$ bash script_25.sh vacio.txt 
Determina si un archivo esta vacío o contiene información
Esta vació el archivo vacio.txt. No contiene informacion.


separador_bash.png

-d: Con esta opción determinamos al evaluar un archivo, si es o no es un directorio.


17_3.png

Ejecución del código

rafael@HP:~/ir_bash$ mkdir test
rafael@HP:~/ir_bash$ bash script_26.sh test
Determina si un archivo es un directorio
El archivo test es un directorio
rafael@HP:~/ir_bash$ 
rafael@HP:~/ir_bash$ rm -ir test/
rm: ¿borrar el directorio 'test/'? (s/n) s
rafael@HP:~/ir_bash$ bash script_26.sh test
Determina si un archivo es un directorio
No es un directorio el archivo test.
rafael@HP:~/ir_bash$ 


separador_bash.png

-h: Con esta opción determinamos si un enlace simbólico o no es un enlace simbólico.


17_4.png

Ejecución del código

rafael@HP:~/ir_bash$ ln -s script_24.sh enlazar
rafael@HP:~/ir_bash$ ls -l enlazar 
lrwxrwxrwx 1 rafael rafael 12 sep 20 22:35 enlazar -> script_24.sh
rafael@HP:~/ir_bash$ bash script_27.sh enlazar
Determina si un archivo es un enlace simbólico
El archivo enlazar es un enlace simbólico
rafael@HP:~/ir_bash$ unlink enlazar
rafael@HP:~/ir_bash$ bash script_27.sh enlazar
Determina si un archivo es un enlace simbólico
No es un enlace simbólico el achivo enlazar.
rafael@HP:~/ir_bash$ 

Importante: Tenemos otras opciones con otras letras para evaluar los archivos. Dicha opciones las veremos más adelante cuando veamos otros temas con los archivos, y así poder evaluarlos.


separador.png

Condicionales: Comparación de cadenas de caracteres

La comparación de cadenas es muy importante conocerla ya que mucho de nuestros script trabajan las variables tipo sting, donde veremos su utilidad cuando deseemos encontrar palabras o grupos de palabras dentro de un archivo, o como resultado de la ejecución de un comando.
En el siguiente ejemplo queremos determinar si dos cadenas de caracteres son iguales.


17_5.png

Ejecución del código

rafael@HP:~/ir_bash$ bash script_28.sh 
Determina si dos cadenas son iguales
Las dos cadenas son iguales
rafael@HP:~/ir_bash$ 


separador_bash.png

En el siguiente ejemplo queremos determinar si dos cadenas de caracteres son diferentes.


17_6.png

Ejecución del código

rafael@HP:~/ir_bash$ bash script_29.sh 
Determina si dos cadenas son diferentes
Las dos cadenas son diferentes
rafael@HP:~/ir_bash$ 


separador_bash.png

En el siguiente ejemplo queremos determinar si la cadena de caracteres está vacía.


17_7.png

Ejecución de código

rafael@HP:~/ir_bash$ bash script_30.sh 
Determina si la cadena de caracteres est'a vacia
La cadena de caracteres esta vacia
rafael@HP:~/ir_bash$ 


separador_bash.png

En el siguiente ejemplo queremos determinar si la cadena de caracteres está llena o contiene información


17_8.png

Ejecución de código

rafael@HP:~/ir_bash$ bash script_31.sh 
Determina si la cadena de caracteres tiene un valor
La cadena de caracteres tiene un valor
rafael@HP:~/ir_bash$ 

Hasta aquí nuestra publicación. Es importante practicar todo lo visto aquí para un mejor entendimiento. Estos ejemplo son referenciales y realizado con la mayor sencillez posible. Imaginemos el potencial que desarrollaremos cuando combinemos todas estas opciones. Ya debes estar pensando que para evaluar si un archivo está vacío primero debemos determinar si el archivo existe.

Nos vemos en la próxima publicación.

IMPORTANTE: Los comando vistos aquí y en próximas publicaciones están limitados para mostrarlos y conceptualizarlos para nuestro quehacer diario. Cada comando tiene muchas opciones que debemos investigar por nuestra propia cuenta cuando estemos trabajando con ellos. Aprovechemos el internet para conocer en profundidad el comando que estemos estudiando y en primer orden no olvidemos lo potente y todo lo que nos brinda el comando man para conocer la sintaxis y todo lo relacionado con todos los comandos que tenemos en nuestro sistema sin recurrir a internet.

Todos a practicar, incluyéndome! Nos vemos en la próxima publicación...


Estos ejercicio y los anteriores los puedes encontrar en el repositorio del curso: https://gitlab.com/btcsiraquino/hp_bash_ejercicios


Mi Twitter

H2
H3
H4
3 columns
2 columns
1 column
2 Comments
Ecency