리디렉션을 사용하는 데 어떤 문제가 있나요?

리디렉션을 사용하는 데 어떤 문제가 있나요?
#! /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

나는 9개의 텍스트 파일을 만들고 싶습니다. 각 파일에는 한 글자가 8번 반복됩니다. 예를 들어 A.txt에는 열에 문자 A가 8번 포함되어야 합니다. 이 문자 없이 스크립트를 실행하면 cat문자 A가 8번 표시되고 B, C 등이 8번 표시됩니다. 문을 삽입해도 cat작동하지 않는 것 같습니다. 내가 뭘 잘못했나요?

답변1

두 개의 별도 명령입니다.

echo something
cat > somewhere

표준 출력을 표준 입력으로 파이프할 수 있습니다.

echo something | cat > somewhere

답변2

간단한 해결책은 다음과 같이 이중 for 루프를 사용하는 것입니다.

for f in {A..J}; do for ((i=0;i<8;i++)); do printf '%s\n' "$f" >> "$f"; done; done

답변3

반복을 위해 bash 시퀀스를 사용할 수 있고 문자를 반복하기 위해 printf를 영리하게 사용할 수 있습니다.

for i in {A..J};do printf "$i%.0s\n" {0..7} > ~/Desktop/$i.txt;done

답변4

~처럼이프레 세세echo및 사이에 파이프가 누락 되었음을 지적합니다 cat. 또 다른 해결책은 줄 수를 제한 하는 대신 yes여러 줄에 걸쳐 반복되는 동일한 텍스트를 사용하는 것입니다 .headcat

for i in {A..J}
do
   yes -- "$i" | head -8 >  ~/Desktop/"$i".txt
done

관련 정보