증분 반복 출력을 생성하는 쉘 스크립트

증분 반복 출력을 생성하는 쉘 스크립트

다음 출력을 여러 번 생성할 수 있는 스크립트가 필요합니다.

@float Figure,fig:n
@cindex 
@image{n,9cm}.
@caption{}
@end float

그러나 여기서 n(두 번)은 매우 큰 숫자까지 1, 2, 3으로 대체됩니다.

감사해요.

답변1

seq 1000 | sed 's/.*/@float Figure,fig:&\
@cindex \
@image{&,9cm}.\
@caption{}\
@end float\
/'

전통적인 Unix 방식( 작업을 seq동시에 실행하고 조정하는 방법 참조 sed).

답변2

노력하다:

$ for n in {1..10}; do printf '@float Figure,fig:%s
> @cindex
> @image{%s,9cm}.
> @caption{}
> @end float
> ' ${n} ${n}; done

또는 한 줄로:

for n in {1..10}; do printf '@float Figure,fig:%s@cindex\n@image{%s,9cm}.\n@caption{}\n@end float\n' ${n} ${n}; done 

위의 내용은 각 그룹 사이에 빈 줄 없이 10번 인쇄됩니다. 10중괄호 안의 숫자를 다른 숫자로 변경하세요 . \n긴 문장 끝에 printf빈 줄을 하나 더 추가하세요.

답변3

루프를 사용할 수 있습니다버팀대 확장그리고 산출물을 생산하는 다양한 방법. 나는 하나를 사용할 것이다여기 문서:

for n in {1..100}
do
    cat <<EOT
@float Figure,fig:$n
@cindex 
@image{$n,9cm}.
@caption{}
@end float
EOT
done

그러면 1과 100 사이의 값을 반복하고 각 값의 텍스트를 인쇄하여 n매번 적절한 값으로 바꿉니다.n

Bash가 없으면 seq 1 100일반 루프 없이 중괄호 확장과 동일한 효과를 갖습니다.

i=0; while [ $i -lt 100 ] ; do ... ; i=$((i + 1)) ; done

동일한 효과를 가지지만 약간 덜 간결해집니다.

관련 정보