Deve ser:
for i in $(cat file); do cp binaryfile.docx "${i}_binaryfile.docx"; done
EDITAR:
Você pode reproduzi-lo com este exemplo:
$ i=1
$ echo $i
1
$ echo $i_7
$ echo ${i}_7
1_7
O ponto é que o caractere _
( sublinhado ) é permitido na variável
nome. Você pode ler sobre isso em man bash
, mas tenha em mente que é
escrito em uma linguagem muito técnica e sucinta:
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.
E mais tarde:
A variable is a parameter denoted by a name.
E:
${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).
Então, se temos uma variável chamada i
e queremos imprimir sua
valor próximo ao _
adjacente, temos que incluí-lo em {}
para informar
Bash
que o nome da variável termina antes de _
.