2017-04-27 38 views
0

所以我试图在makefile中运行一个jq命令来链接一些依赖项,并且我不明白do-done内部的行是干什么的。如果只使用echo“$$ dep”,我明白发生了什么,但是当使用完整的代码行时([-f“$$ dep/package.json”] & & echo“$$ dep”;)我似乎迷路了。有人有什么主意吗?谢谢。使用jq从package.json中提取关于依赖关系的信息

jq -r '.dependencies,.devDependencies|keys[]' $< | while read -r dep; do \ 
    [ -f "$$dep/package.json" ] && echo "$$dep"; \ 
done | (piping forward) 

回答

0

由于这是在makefile,有两件事情需要了解。首先,要了解“$$”变量($$dep),看到这个计算器的问题:

Makefile and use of $$

其次,要了解的......在do ... done,请记住,这基本上等同于有条件的壳形式:

if [ -f _ ] ; then echo _ ; fi 

有关测试的详细信息,请参阅eg http://wiki.bash-hackers.org/commands/classictest

+0

所以这里'[-f“$$ dep/package。part]'正在检查该文件是否存在? – bgiuga