3

要素の組み合わせを生成するエコー機能を利用する小さなスクリプトがあります。それがコードの一部です。

set={1,2,3,4}
group=3
for ((i=0; i<$group; i++));
do
  repetition=$set$repetition
done

bash -c "echo "$repetition""

問題は、セットをコンマ、括弧などの特殊文字で構成したいときに発生します。スケープで試しましたが、うまくいかないようです。

set={(,),\,,=}

それを達成する方法についての手がかりはありますか?

4

2 に答える 2

2

引用してエスケープする必要があります:

set={1,2,3,"\'4\'"}

{1,2,3,4}数字なので動作していたことに注意してください。文字列の場合は、引用符も必要です:{1,2,3,'a'}

$ echo {1,2,3,'a'}{1,2,3,'a'}
11 12 13 1a 21 22 23 2a 31 32 33 3a a1 a2 a3 aa

そして、エスケープはbash -c、値とともに の実行を処理することです。


コメントから、最終的なスクリプトは次のとおりです。

set={"\(","\)","\,"}
group=3
for ((i=0; i<$group; i++));
do
  repetition=$set$repetition
done

bash -c "echo "$repetition""

私がそれを実行すると、これが得られます。

$ ./a
((( (() ((, ()( ()) (), (,( (,) (,, )(( )() )(, ))( ))) )), ),( ),) ),, ,(( ,() ,(, ,)( ,)) ,), ,,( ,,) ,,,
于 2014-10-03T12:00:06.047 に答える