我想执行Shell命令,但我不知道如何在我的Makefile中正确执行sub bash命令
import-bd:
@while ! nc -z $(make ips | awk '/mysql/ { print $2 }') 3306; do \
sleep 1 \
done
...
感谢您的帮助!
答案 0 :(得分:3)
您需要引用$
并添加;
import-bd:
@while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
sleep 1; \
done
当make看到一个$
时,它会尝试进行变量扩展。通过编写$$
,将单个$
传递给awk(或者更确切地说,它将单个$
传递给SHELL,后者调用awk
)。此外,需要sleep 1
之后的分号,因为make剥离了换行符。
答案 1 :(得分:2)
sleep 1
后你丢失了分号
还要首先解析此行然后再进行bash。你需要用两美元来逃避美元。
import-bd:
@while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
sleep 1; \
done