【发布时间】:2018-05-17 11:53:35
【问题描述】:
我想执行一个 Shell 命令,但我不知道如何在我的 Makefile 中正确执行 sub bash 命令
import-bd:
@while ! nc -z $(make ips | awk '/mysql/ { print $2 }') 3306; do \
sleep 1 \
done
...
感谢您的帮助!
【问题讨论】:
我想执行一个 Shell 命令,但我不知道如何在我的 Makefile 中正确执行 sub bash 命令
import-bd:
@while ! nc -z $(make ips | awk '/mysql/ { print $2 }') 3306; do \
sleep 1 \
done
...
感谢您的帮助!
【问题讨论】:
您需要引用$s 并添加;
import-bd:
@while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
sleep 1; \
done
当 make 看到单个 $ 时,它会尝试进行变量扩展。通过编写$$,make 将单个$ 传递给awk(或者,更准确地说,它将单个$ 传递给调用awk 的SHELL)。另外,sleep 1 后面的分号是必需的,因为 make 会去掉换行符。
【讨论】:
sleep 1 后面缺少分号。
还 make 先解析这一行,然后再解析 bash。你需要用两美元来逃避美元。
import-bd:
@while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
sleep 1; \
done
【讨论】: