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