Bash forループはフォルダを作成します。一部の文字をエスケープする必要がありますか?

Bash forループはフォルダを作成します。一部の文字をエスケープする必要がありますか?

名前は同じですが、増分カウンターを持つ5つのファイルを作成したいと思います。

私がするなら:

for i in {1..5}; do touch hallo_$i; done

hallo_1などを受け取ります。hallo_2hallo_3

私がするなら:

for i in {1..5}; do touch company-price-$i_spec.rb; done

私は得る:company-price-.rb

何かから逃げなければならないのでしょうか? bashは私が$i変数から削除/減算したいと思いますか?

逃げても、.まだ-同じ結果が得られます。どのようなヒントがありますか?

答え1

変数拡張には中括弧型を使用する必要があります。

for i in {1..5}; do touch company-price-${i}_spec.rb; done

それ以外の場合。代わりに変数拡張bashとして扱われます。$i_spec$i

~からbash 手動:

The basic form of parameter expansion is ${parameter}. The value of 
parameter is substituted. The braces are required when parameter is a
positional parameter with more than one digit, or when parameter is 
followed by a character that is not to be interpreted as part of its name.

関連情報