zoukankan      html  css  js  c++  java
  • DevOps Makefile中使用shell赋值变量

    摘自:https://www.dazhuanlan.com/tahao/topics/1562291

    今天我为了makefile的方便起见,将一些变量通过脚本的形式给到makefile中,但是通过shell命令给makefile变量赋值让我头疼了一波..

    shell中赋值非常简单

    1
    2
    3
    4
    ➜ PRE_CKPT=log/20190405-174159        
    ➜ NUM=`python3 tools/get_trian_num.py ${PRE_CKPT}`
    echo ${NUM}
    4700

    在 makefile 中实现

    1. 第一次写法
      1
      2
      3
      freeze: 
      NUM=`python3 tools/get_trian_num.py ${PRE_CKPT}`
      echo ${NUM}

    执行,发现什么都没有输出

    1
    2
    3
    ➜ make freeze PRE_CKPT=log/20190405-174159
    NUM=`python3 tools/get_trian_num.py log/20190405-174159`
    echo

    这里的问题是,我们通过shell命令赋值的是shell的变量,这个变量还不是makefile的变量.所以我们需要通过$$VAR的方式调用这个变量.

    1. 第二次写法
      1
      2
      3
      freeze: 
      NUM=`python3 tools/get_trian_num.py ${PRE_CKPT}`
      echo $$NUM

    执行,发现还是没有输出

    1
    2
    3
    ➜ make freeze PRE_CKPT=log/20190405-174159
    NUM=`python3 tools/get_trian_num.py log/20190405-174159`
    echo $NUM

    这里是因为makefile中命令如果没有使用;来连接,是无法共享变量的.所以还得修改

    1. 第三次写法
    1
    2
    3
    freeze: 
    @NUM=`python3 tools/get_trian_num.py ${PRE_CKPT}`;
    echo $$NUM

    终于有了我想要的输出

    1
    2
    ➜  make freeze PRE_CKPT=log/20190405-174159
    4700
  • 相关阅读:
    android 加入关屏
    网址导航收集
    OpenStack 中文社区
    Truncate 删除数据
    c# 实体类生成工具
    .net 关系
    html中,播放 flash
    Axis2.0+WebService的使用
    xfire java web服务器引擎
    修复 google paly
  • 原文地址:https://www.cnblogs.com/LiuYanYGZ/p/15560416.html
Copyright © 2011-2022 走看看