No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

3D
22H
30M
5S
Curso de Programación en Bash Shell

Curso de Programación en Bash Shell

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Leer Archivos

32/43
Recursos

Aportes 13

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Un poquito digerido para los que se puedan perder en el qué pasa aquí:
\

  • IFS es una variable especial que define un separador de tokens, esto es si quiero obtener partes separadas de una cadena. En este caso no se quiere separar nada de cada línea, entonces se pone en blanco con
IFS=
  • La ejecución del while es sobre un comando, entonces corre siempre que el comando sea exitoso
  • El comando al interior de while es:
IFS= read linea

Que tiene dos partes:

  1. Establecer IFS como vacío solo para la ejecución de read (evita problemas de separaciones no deseadas)
  2. Leer una linea del archivo de forma repetida hasta que read falle por fin de archivo. En este caso, por como se ha escrito todo el bloque while, ocurre en general un
read linea < ruta_al_archivo

Esta sintaxis es la redirección de entrada estándar, o sea que le estoy pasando a read que lea como si fuera la entrada interactiva, pero directamente toma el archivo

Admiro el esfuerzo del profesor por tratar de ser elocuente y sacar el curso, pero en esta clase se hizo bolas muy feo. Me da la sensación de que copió el código de otro monitor con notas porque explico poco cuando mucho, y confundir un signo de pesos con una S mayúscula es una cosa muy extraña. Este curso necesita actualizarse. Cumple su propósito pero podría mejorar mucho.

Hola… saludos.

# ! /bin/bash
# Programa para leer un archivo
# Author Diego Beltran histagram @diegodevelops

echo "Leer archivoss"
cat $1
echo -e "\nAlmacenar valores en un avariable"
valorCat=`cat $1`
echo "$valorCat"

#se usa variable especial IFS (internal file separator) evitar recortes de espacios en blanco
echo -e "\nLeer archivos linea por linea utilizando while "
while IFS= read linea
do
    echo "$linea"
done < $1```

Queda de la siguiente forma:

# ! /bin/bash
# Programa para ejemplificar como se lee en un archivo
# Autor Jose Suarez

echo "Leer en un Archivos"
cat $1
echo -e "\nAlmacenar valores en un avariable"
valorCat=`cat $1`
echo "$valorCat"

#se usa variable especial IFS (internal field separator) evitar recortes de espacios en blanco
echo -e "\nLeer archivos linea por linea utilizando while "
while IFS= read linea
do
        echo "$linea"
done < $1

podemos ir copiando y dando enter hasta las lineas que queramos enviar al argumento y se finaliza con control+c

echo “Escribir en un archivo”

lectura = $(cat >> $1)

Muchas gracias profe

La sustitución de comandos permite usar la salida de un comando como si fuera el valor de una variable
La sintaxis antigua es : variable='comando`
pero actualmente se prefiere usar : variable=$(comando)

Existen 3 métodos:

  • A través de echo
  • A través de una variable auxiliar
  • A través de un loop while línea por línea
<h5>Ejemplo</h5>
# ! /bin/bash
# Programa para ejemplificar cómo se lee en un archivo
# Autor: Juan Manuel

echo "Leer en un archivo"

#Primer método
echo -e "\nLeer directamente todo el archivo"
cat $1

#Segundo método
echo -e "\nAlmacenar los valores en una variable"
valorCat=`cat $1`
echo "$valorCat"

#Tercer método
#Se utiliza la variable especial IFS (Internal File Separator) para evitar que los espacios en blanco se recorten
echo -e "\nLeer archivos línea por línea utilizando while"
while IFS= read linea
do
    echo "$linea"
done < $1

No entiendo porque cuando coloca un comando en el script a veces usa el formato ls a veces $(ls) o a veces simplemento lo coloca así sin más ¿cuál es la diferencia, cuando se usa uno u otro?

A estas alturas ya nadie se queja del “tema”

hola buenas tardes no es nada facil para mi hacer las comillas dobles , lo hice con control y la tecla + , si sabes otra forma coenta por favor

Listo y entendido

#!/bin/bash

# Reading a file
cat $1

# Saving the read response in a variable
cat_response=`cat $1`
echo "$cat_response"

# Reading a file line by line with IFS to read also the blank spaces
while IFS= read line
do
    echo "$line"
done < $1