#! /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
Quero criar 9 arquivos de texto, cada um mostrando uma letra repetida 8 vezes. por exemplo , A.txt deve ter a letra A 8 vezes em uma coluna) Se eu executar o script sem o cat
, ele realmente me mostrará 8 vezes a letra A, depois 8 vezes o B, C, etc. cat
não funciona. O que estou fazendo de errado?
Responder1
São dois comandos independentes.
echo something
cat > somewhere
Você pode usar o pipe para passar o stdout para o stdin:
echo something | cat > somewhere
Responder2
Uma solução simples para isso seria um loop for duplo como segue:
for f in {A..J}; do for ((i=0;i<8;i++)); do printf '%s\n' "$f" >> "$f"; done; done
Responder3
Você pode usar sequências bash para o loop e uso inteligente de printf para repetir caracteres:
for i in {A..J};do printf "$i%.0s\n" {0..7} > ~/Desktop/$i.txt;done
Responder4
ComoSircer Iporapontou que você está faltando apenas um cano entre você echo
e cat
. Outra solução seria yes
repetir o mesmo texto em múltiplas linhas e head
em vez de cat
limitar o número de linhas, por exemplo
for i in {A..J}
do
yes -- "$i" | head -8 > ~/Desktop/"$i".txt
done