Entonces, estoy tratando de ejecutar un comando jq dentro de un archivo MAKE para vincular algunas dependencias, y no entiendo qué hace la línea dentro de do-done. Si solo uso echo "$$dep", entiendo lo que está pasando, pero cuando uso la línea completa de código ([ -f "$$dep/package.json" ] && echo "$$dep";) parezco ser perdió. ¿Alguien tiene alguna idea? Gracias.
jq -r '.dependencies,.devDependencies|keys[]' $< | while read -r dep; do \ [ -f "$$dep/package.json" ] && echo "$$dep"; \ done | (piping forward)Dado que esto está en un makefile , hay dos cosas que deben entenderse. Primero, para comprender la variable "$$" ( $$dep ), consulte esta pregunta de stackoverflow:
En segundo lugar, para entender el... en do ... done , recuerda que esto es esencialmente equivalente a un shell condicional de la forma:
if [ -f _ ] ; then echo _ ; fiPara obtener detalles sobre la prueba, consulte, por ejemplo, http://wiki.bash-hackers.org/commands/classictest