es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucle anidado de bash para ejecutar solo una vez.

Necesito crear múltiples archivos con contenido como el que se muestra a continuación y sustituir los valores de éste a partir de otros 3 archivos diferentes.

name: 
url:
description:

Intenté agregar valores al contenido anterior utilizando un bucle while, pero se ejecutó con una combinación de 3^3, cuando lo que necesito es crear un archivo con la primera línea de los 3 archivos sustituida, un segundo archivo con la segunda línea de los 3 archivos sustituida, y así sucesivamente.

Este es el código que utilicé:

while read line1;
do 
while read line2;
do 
while read line3;
do 
echo "
name: $line1
url: $line2
description: $line3" > $line1.txt;
done < url.txt
done < description.txt
done < name.txt
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear varios archivos con el contenido mencionado y con valores de diferentes archivos, podemos modificar el código anterior utilizando un contador para llevar el registro del número de línea y crear los archivos correspondientes. A continuación se muestra el código modificado:

    contador=1
    while read linea1;
    do 
        while read linea2;
        do 
            while read linea3;
            do 
                echo "
                nombre: $linea1
                url:  $linea2
                descripción: $linea3
                " > archivo_$contador.txt ;
                ((contador++))
            done < description.txt
        done < url.txt
    done < name.txt
    

    En este código modificado, estamos utilizando una variable contador para llevar el registro del número de línea. Para cada combinación de los tres archivos, creamos un archivo con el nombre archivo_contador.txt y sustituimos los valores utilizando las variables $linea1, $linea2 y $linea3. Luego, incrementamos la variable contador. Este código debería crear archivos separados con cada línea de los tres archivos de entrada sustituidas en el contenido.

Comments are closed.