首先,你可以用linux shell做這些轉換的名字是什麼?如何在shell腳本變量中使用{old,new}名稱?
$ echo {old,new}name
oldname newname
我試圖把然後在一個變量,如:
$ var={old,new}name
$ echo $var
{old,new}name
但他們停止工作,因爲我們可能會看到。我需要他們在一個變量,以便輕鬆改變他們對批量操作爲:
mv {old,new}name/"file 1.txt"
mv {old,new}name/"file 2.txt"
mv {old,new}name/"file 3.txt"
mv {old,new}name/"file 4.txt"
所以,我可以把它們寫爲:
var={old,new}
mv '$var'name/"file 1.txt"
mv '$var'name/"file 2.txt"
mv '$var'name/"file 3.txt"
mv '$var'name/"file 4.txt"
而且,我很難放在一起shell變量和name
補充即$varname
。我想出圍繞$var
名稱使用單引號,即'$var'name
。想過,這是做這件事的最好方法嗎?
是字符串分割和通配符* *後參數替代這種情況發生的唯一的擴展。在展開*值之前,Brace展開發生。有很多令人信服的安全原因,爲什麼這是真的(如果任意數據被解析爲語法,你基本上可以*不會*在bash中編寫腳本來處理帶有不可信名稱的文件)。 –
...所以,簡短的回答是「你不能這樣做*出於好的原因*,並且試圖找到解決方法(與'eval'一樣)將危害安全性,除非非常小心」。 –