#! /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
여러 줄에 걸쳐 반복되는 동일한 텍스트를 사용하는 것입니다 .head
cat
for i in {A..J}
do
yes -- "$i" | head -8 > ~/Desktop/"$i".txt
done