Linux
使用來自列表的名稱多次復製文件
我有一個名稱列表,我有一個二進製文件。我想複製該二進製文件,以便列表的每個成員都有一個副本。該列表是一個文本文件,每一行都有一個名稱。我不斷回到
for i in $(cat ../dir/file); do cp binaryfile.docx "$i_binaryfile.docx"; done
沒有錯誤。僅創建一個名為 _binaryfile.docx 的文件。
我看過這個$$ Copy-a-file-to-a-destination-with-different-names $$ 和 $$ duplicate-file-x-times-in-command-shell $$但我看不出它們有何不同。
它應該是:
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
變數的名稱在_
.