如何在Makefile中运行子Shell脚本?

Nic*_* S. 5 bash makefile

我想执行一个 Shell 命令,但我不知道如何在我的 Makefile 中正确执行 sub bash 命令

import-bd:
    @while ! nc -z $(make ips | awk '/mysql/ { print $2 }') 3306; do \
        sleep 1 \
    done
    ...
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助 !

Wil*_*ell 10

您需要引用$s 并添加一个;

import-bd:
    @while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
        sleep 1; \
    done
Run Code Online (Sandbox Code Playgroud)

当 make 看到单个 时$,它会尝试进行变量扩展。通过编写$$,make 将单个传递$给 awk(或者,更准确地说,它将单个传递给$调用 的 SHELL awk)。此外,后面的分号sleep 1是必需的,因为 make 会去除换行符。