増分反復出力を生成するシェルスクリプト

増分反復出力を生成するシェルスクリプト

次の出力を複数回生成できるスクリプトが必要です。

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

ただし、n(2回)は非常に大きな数字まで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

または1行で:

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

ループが利用可能支柱の拡張そして、出力を生成するさまざまな方法。私は1つを使用しますここのドキュメント:

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

同じ効果がありますが、少し簡潔になります。

関連情報