リストの名前を使用してファイルを複数回コピーする

リストの名前を使用してファイルを複数回コピーする

名前のリストとバイナリファイルがあります。リストの各メンバーがコピーを持つように、このバイナリのコピーを作成したいと思います。リストはテキストファイルで、各行には名前があります。私は戻ってきます。

for i in $(cat ../dir/file); do cp binaryfile.docx "$i_binaryfile.docx"; done

エラーはありません。 _binaryfile.docxという名前のファイルのみが生成されます。

私はこれを見たことがある[別名でターゲットにファイルをコピー] そして[コマンドシェルでファイルをx回繰り返す]しかし、私は彼らがどう違うのかわかりません。

ベストアンサー1

それが必要です:

for i in $(cat file); do cp binaryfile.docx "${i}_binaryfile.docx"; done

編集する:

次の例を使用して再現できます。

$ i=1
$ echo $i
1
$ echo $i_7

$ echo ${i}_7
1_7

ポイントは_下線)文字が変数名に表示されることがあります。次の内容を読むことができますが、man bash非常に技術的で簡潔な言語で書かれていることに注意してください。

   name   A  word  consisting  only  of alphanumeric characters and underscores, and
          beginning with an alphabetic character or an underscore.  Also referred to
          as an identifier.

後で:

A variable is a parameter denoted by a name.

そして:

   ${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 which is not  to  be  interpreted  as
          part  of  its name.  The parameter is a shell parameter as described above
          PARAMETERS) or an array reference (Arrays).

したがって、名前付き変数があり、iその値を横に印刷するには、変数名が前に終わるように変数 _を囲む必要があります。{}Bash_

おすすめ記事