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 鈥淓scribir 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 鈥渢ema鈥

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