makefile for循环中的意外操作符


for dir in " b/. c/. obj/. src/. "; do 
        if [ $dir != "src/." ] && [ $dir != "obj/." ]; then 
            make -C $dir; 
        fi; 
    done 

这里的错误是/bin/sh: 2: [: b/.: unexpected operator,为什么我得到这个错误。b/。是makefile所在目录的子目录。

for dir in b/. c/. obj/. src/.; do 
    if [ "$$dir" != "src/." ] && [ "$$dir" != "obj/." ]; then 
        make -C $$dir; 
    fi; 
done

变化:

  • $dir转义为$$dir,以便make不会认为您正在使用$d变量

  • $$dir加引号

  • for参数中删除引号,这样它们就不会被解释为单个引号

  • 增加了一些空格

最新更新