【问题标题】:How to run sub Shell script in Makefile?如何在 Makefile 中运行子 Shell 脚本?
【发布时间】: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
    ...

感谢您的帮助!

【问题讨论】:

    标签: bash makefile


    【解决方案1】:

    您需要引用$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 会去掉换行符。

    【讨论】:

    • 完美!谢谢:)
    【解决方案2】:

    sleep 1 后面缺少分号。
    还 make 先解析这一行,然后再解析 bash。你需要用两美元来逃避美元。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-30
      • 2016-04-20
      • 1970-01-01
      • 2011-04-14
      • 2013-10-11
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多