2017-04-27 1 views
0

So versuche ich, einen jq-Befehl in einem Makefile zu führen, um einige Abhängigkeiten zu verknüpfen, und ich verstehe nicht, was die Zeile innerhalb der Do-Done tut. Wenn ich nur echo "$$ dep" benutze, verstehe ich, was passiert, aber wenn ich die vollständige Codezeile verwende ([-f "$$ dep/package.json"] & & echo "$$ dep";) schein ich zu verloren sein. Hat jemand eine Idee? Vielen Dank.Verwenden von jq, um Informationen über Abhängigkeiten aus package.json zu extrahieren

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

Antwort

0

Da dies in einem makefile ist, gibt es zwei Dinge, die verstanden werden müssen. Erstens, zu verstehen, den „$$“ Variable ($$dep) finden Sie auf diese Frage Stackoverflow:

Makefile and use of $$

Zweitens zu verstehen, die ... in do ... done, denken Sie daran, dass dies zu einer Schale im wesentlichen äquivalent ist bedingt von das Formular:

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

Für Details über den Test, siehe zB http://wiki.bash-hackers.org/commands/classictest

+0

Also hier überprüft die '[-f" $$ dep/package.part] ', ob diese Datei existiert? – bgiuga

Verwandte Themen