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

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

作者: hchencoder | 来源:发表于2017-01-09 17:01 被阅读0次

    问题:

    今天在批量格式化文件夹名称时遇到一个问题:我要用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中有跳脱特殊符号的作用,也没搞清楚在此处的作用,不过这样做是可行的。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/otjhbttx.html