Enviar los resultados de un bucle for anidado a un archivo en bash

Enviar los resultados de un bucle for anidado a un archivo en bash

He estado intentando crear un archivo fuera de mi bucle en bash, logré generar el archivo con el siguiente código

for ((i = 0; i <= 5; i++)); do
  for ((j = i; j <= 5; j++)); do
    echo -e "$i $j" >> numbers.txt
  done 
done

sin embargo quiero que mis resultados salgan de la siguiente manera

 01

 02

 03

etc.

Pero el resultado que estoy obteniendo es similar a este.

0 0 1 0 2 0 3 0 4 0 5 1 1 1 2 1 3 1 4 1 5 2 2 2 3 2 4 2 5 3 3 3 4 3 5

Como puedo resolver esto ?

Respuesta1

bash tieneBucles for estilo C, pero estilísticamente son un poco extraños de usar cuando no es necesario. Y si realmente lo haces absolutamentetenera,podríaestar usando el lenguaje equivocado. (Para este caso de uso, Shell está bien, por supuesto).

Una forma mucho más parecida a un shell de hacer esto (en mi opinión) es:

for i in {0..5}; do for j in $(seq "$i" 5); do echo "$i$j"; done; done

Aquí hay otro enfoque:

(set {0..5}; for i; do for j; do [ "$i" -le "$j" ] && echo "$i$j"; done; done)

Los escribo como frases ingeniosas adecuadas para un shell interactivo, pero funcionan igualmente bien en forma estructurada (lo que normalmente sería preferible en un script):

set {0..5}
for i; do
  for j; do
    [ "$i" -le "$j" ] &&
      printf '%d%d\n' "$i" "$j"
  done
done

Respuesta2

for ((i = 0; i <= 5; i++)); do
  for ((j = i; j <= 5; j++)); do
    echo -e "${i}${j}\n" >> numbers.txt
  done 
done

Debería funcionar. Eliminé el espacio, prefiero usar {}alrededor de mis variables y \ncolocarlo en una nueva línea.

información relacionada