問題:
今天在批量格式化文件夾名稱時遇到一個問題:我要用for循環(huán)批量重命名一些文件夾稽煤,原文件夾名格式為前綴+數(shù)字+后綴(即“prefix_num_suffix”),我要改成新的前綴+數(shù)字(prefixnew+num),我就用中間的數(shù)字作為for循環(huán)的變量匹耕,代碼如下(比如有10個文件夾):
for i in {1..10}; do mv prefix_$i_suffix prefixnew_$i;done
但是運行會出錯烛缔,顯示沒有“prefix”這個文件夾,后來完成才發(fā)現(xiàn)是變量使用過程中產(chǎn)生的問題柜砾。原本的變量名應(yīng)該是“i”辐马,但上述命令中的變量名變成了“i_suffix",而這個變量并沒有被定義局义,也就沒有值喜爷,所以for循環(huán)要修改的文件夾變成“prefix”,導(dǎo)致錯位發(fā)生萄唇。
解決:
用反斜杠"** \ "鏈接變量名與后綴(即在“ $i”和“_suffix**”之間加個反斜杠):
for i in {1..10}; do mv prefix_$i\_suffix prefixnew_$i;done
我知道反斜杠在shell中有跳脫特殊符號的作用檩帐,也沒搞清楚在此處的作用,不過這樣做是可行的另萤。