在Makefile中的嵌套循环中使用Bash命令


0

我想在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命令。(我已经提到了嵌套循环,因为我打算在这个循环之后添加另一个循环)

Answers:


0

当我在没有((和))的情况下使用bash命令时,问题似乎得到了解决。


使用((is用于算术,(用于子shell。使用单个`('很好,如果你想改变目录并无条件地返回到子shell末尾的正确位置。请记住,当子shell返回时,子shell中的算法会丢失...
levif 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.