#! /bin/bash
for i in {A,B,C,D,E,F,G,H,J} ; do
echo "$i
$i
$i
$i
$i
$i
$i
$i"
cat > ~/Desktop/$i.txt
done
Quiero crear 9 archivos de texto, cada uno de los cuales me muestra una letra repetida 8 veces. por ejemplo, A.txt debería tener la letra A 8 veces en una columna) Si ejecuto el script sin cat
, de hecho me muestra 8 veces la letra A, luego 8 veces la B, C, etc. Al insertar la cat
declaración, no No funciona. ¿Qué estoy haciendo mal?
Respuesta1
Son dos comandos independientes.
echo something
cat > somewhere
Puedes usar pipe para pasar la salida estándar a la entrada estándar:
echo something | cat > somewhere
Respuesta2
Una solución simple a esto sería un bucle for doble de la siguiente manera:
for f in {A..J}; do for ((i=0;i<8;i++)); do printf '%s\n' "$f" >> "$f"; done; done
Respuesta3
Puedes usar secuencias bash para el bucle y un uso inteligente de printf para repetir caracteres:
for i in {A..J};do printf "$i%.0s\n" {0..7} > ~/Desktop/$i.txt;done
Respuesta4
ComoIpor SircerSeñaló que simplemente le falta una tubería entre su echo
y cat
. Otra solución sería utilizar yes
repetir el mismo texto de varias líneas y head
en lugar de cat
limitar el número de líneas, por ejemplo
for i in {A..J}
do
yes -- "$i" | head -8 > ~/Desktop/"$i".txt
done