shell命令中反斜杠“\”和“$var”一起时的一个作用

2017-01-09  本文已影响0人  hchencoder

问题:

今天在批量格式化文件夹名称时遇到一个问题:我要用for循环批量重命名一些文件夹,原文件夹名格式为前缀+数字+后缀(即“prefix_num_suffix”),我要改成新的前缀+数字(prefixnew+num),我就用中间的数字作为for循环的变量,代码如下(比如有10个文件夹):

for i in {1..10}; do mv prefix_$i_suffix prefixnew_$i;done

但是运行会出错,显示没有“prefix”这个文件夹,后来完成才发现是变量使用过程中产生的问题。原本的变量名应该是“i”,但上述命令中的变量名变成了“i_suffix",而这个变量并没有被定义,也就没有值,所以for循环要修改的文件夹变成“prefix”,导致错位发生。

解决:

用反斜杠"** \ "链接变量名与后缀(即在“ $i”和“_suffix**”之间加个反斜杠):

for i in {1..10}; do mv prefix_$i\_suffix prefixnew_$i;done

我知道反斜杠在shell中有跳脱特殊符号的作用,也没搞清楚在此处的作用,不过这样做是可行的。

上一篇 下一篇

猜你喜欢

热点阅读