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

问题:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,890评论 18 139
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,779评论 0 11
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,186评论 3 53
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,947评论 6 342
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 10,933评论 0 11