#! /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
파이프를 사용하여 stdout을 stdin으로 전달할 수 있습니다.
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