我想在Makefile中执行一个Shell命令,但我不知道如何正确地使用子bash命令。
import-bd:
@while ! nc -z $(make ips | awk '/mysql/ { print $2 }') 3306; do \
sleep 1 \
done
...
谢谢你的帮助!
$
符号并添加;
。import-bd:
@while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
sleep 1; \
done
在make看到一个单独的$
时,它会尝试进行变量展开。通过写入$$
,make将单个$
传递给awk(更准确地说,它将单个$
传递给SHELL,然后调用awk
)。此外,在sleep 1
之后需要分号,因为make会去掉换行符。
在 sleep 1
后面缺少分号。
同时要先解析这行代码再运行。你需要用两个美元符号来转义一个美元符号。
import-bd:
@while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
sleep 1; \
done