我想在makefile中的嵌套循环中使用bash命令,我当前的代码不起作用。有人可以指导我可能出现的问题。我在测试目标中编写了一个简单的代码。在这里,我想转到目录DIR_S / case1并将rtt.csv文件复制到另一个目录DIR_D / rtt /目录中。
test:
cn=1; while [[ $$cn -le 2 ]] ; do \
echo $$cn ; \
((cd $(DIR_S)/case\ $$cn)) ; \
((cp rtt.csv $(DIR_D)/rtt/)) ; \
((cn = cn + 1)) ; \
done
运行此命令时没有错误,但我看到此消息并且未执行该行
/bin/sh: ((: cd /Users/Umar/Desktop/dummy1/case 1: division by 0 (error token is "/Umar/Desktop/dummy1/case 1")
我注意到的一件事是,如果打字
cd /Users/Umar/Desktop/dummy1/case 1
在命令行它因空间不起作用,我也更新了上面的行
((cd $(DIR_S)/case\ $$cn)) ; \
至
((cd $(DIR_S)/case\\ $$cn)) ; \
但仍然没有执行此行。有人可以指导我如何在Makefile中的嵌套循环中使用bash命令。(我已经提到了嵌套循环,因为我打算在这个循环之后添加另一个循环)
((
is用于算术,而(
用于子shell。使用单个`('很好,如果你想改变目录并无条件地返回到子shell末尾的正确位置。请记住,当子shell返回时,子shell中的算法会丢失...