shell – 如何在make recipe中使用for循环
发布时间:2020-12-16 01:11:19 所属栏目:安全 来源:网络整理
导读:我想使用循环来查找一些文件并重命名它们: for i in `find $@ -name *_cu.*`;do mv $i "$(echo $i|sed s/_cu//)" done 这适用于shell.但是如何在makefile配方中执行此操作? 将非平凡的shell片段放入make recipes中时,您需要了解两件事: 配方中的命令(当然
我想使用循环来查找一些文件并重命名它们:
for i in `find $@ -name *_cu.*`;do mv $i "$(echo $i|sed s/_cu//)" done 这适用于shell.但是如何在makefile配方中执行此操作?
将非平凡的shell片段放入make recipes中时,您需要了解两件事:
>配方中的命令(当然!)一次执行一次,其中命令意味着“配方中带有选项卡前缀的行”,可能会分布在带有反斜杠的几个makefile行上. 所以你的shell片段必须全部写在一条(可能是反斜杠)的行上.此外,它有效地作为单行呈现给shell(backslashed-newlines不是简单的换行符,因此不被shell用作命令终止符),因此必须在语法上正确. 通常在shell脚本中,您可以在单独的行上编写单独的命令,但在这里您实际上只获得一行,因此必须使用分号分隔各个shell命令.将所有这些放在一起为您的示例产生: foo: bar for i in `find $@ -name *_cu.*`; do mv $$i "$$(echo $$i|sed s/_cu//)"; done 或等效地: foo: bar for i in `find $@ -name *_cu.*`; do mv $$i "$$(echo $$i|sed s/_cu//)"; done 请注意,后者即使在几行上可读地布局,也需要仔细使用分号来保持shell的快乐. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |