首页 > 系统相关 >shell:Makefile从shell脚本中导入变量

shell:Makefile从shell脚本中导入变量

时间:2023-02-13 11:07:32浏览次数:34  
标签:VERSION shell version 0.0 Makefile echo 导入 versionecho


目录

  • ​​需求描述​​
  • ​​Makefile 读取变量​​
  • ​​Makefile文件中定义变量​​
  • ​​Makefile从shell脚本中导入变量​​
  • ​​优先级​​
  • ​​1、导入shell中的变量​​
  • ​​2、传递参数​​
  • ​​3、内部变量​​
  • ​​4、全局变量​​

需求描述

Makefile需要从shell脚本中读取变量

Makefile 读取变量

# 打印版本号
.PHONY: echo-version
echo-version:
echo ${VERSION};

直接打印发现是空的

$ make echo-version
echo ;

可以读取环境变量

$ export VERSION='0.0.1' && make echo-version
echo 0.0.1;
0.0.1

可以通过命令行传递变量

$ make echo-version VERSION='0.0.1'
echo 0.0.1;
0.0.1

Makefile文件中定义变量

# makefile文件中定义变量
VERSION="0.0.2"

# 打印版本号
.PHONY: echo-version
echo-version:
echo ${VERSION};
$ make echo-version
echo "0.0.2";
0.0.2

Makefile从shell脚本中导入变量

# 打印版本号
.PHONY: echo-version
echo-version:
. ./version.sh && echo $${VERSION};

注意:使用两个​​$$​​​ 而不是 ​​$​

version.sh

#!/bin/bash

##################################
# 版本号
##################################

export VERSION='0.0.3'
$ make echo-version
. ./version.sh && echo ${VERSION};
0.0.3

优先级

原则:谁最后导入,谁的优先级最高

1、导入shell中的变量

version.sh

#!/bin/bash

export VERSION='0.0.1'

Makefile

# 打印版本号
VERSION='0.0.3'
.PHONY: echo-version
echo-version:
. ./version.sh && echo $${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version VERSION='0.0.2'
. ./version.sh && echo ${VERSION};
0.0.1

2、传递参数

Makefile

# 打印版本号
VERSION='0.0.3'
.PHONY: echo-version
echo-version:
echo ${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version VERSION='0.0.2'
echo ${VERSION};
0.0.2

3、内部变量

Makefile

# 打印版本号
VERSION='0.0.3'
.PHONY: echo-version
echo-version:
echo ${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version
echo '0.0.3';
0.0.3

4、全局变量

Makefile

# 打印版本号
# VERSION='0.0.3'
.PHONY: echo-version
echo-version:
echo ${VERSION};

执行

$ export VERSION='0.0.4' && make echo-version
echo 0.0.4;
0.0.4

标签:VERSION,shell,version,0.0,Makefile,echo,导入,versionecho
From: https://blog.51cto.com/mouday/6053718

相关文章

  • 达梦数据库的导入导出命令行操作
    1、登录达梦数据库切换目录到大梦数据库的bin目录下[root@localhostbin]#./disqlSYSDBA/SYSDBA@localhost:52362、创建数据库创建数据库之后会出现数字,1或2,......
  • shell练习
    #!/bin/bash###################################################根据输入的软件名,杀死全部含有软件名的进程#这里利用的awk,模拟psgrep############################......
  • 【Shell】运算符
    目录算术运算符expr(求值表达式)命令expr语法算术运算符介绍比较运算符语法:布尔运算符文件测试运算符算术运算符expr(求值表达式)命令expr是evaluateexpressions的缩......
  • 【Shell】字符串变量
    目录字符串变量介绍字符串的3种格式字符串的3种格式区别使用单引号''的字符串:(不建议使用,没有办法解析变量)由双引号""包围的字符串:(推荐)不被引号包围的字符串:获取字符串的......
  • 嵌入式Linux—浅析Makefile
    Makefile文档组织管理程序不使用Makefile的缺点-otesta.cb.c执行过程:a.c文件通过预处理、编译、汇编得到a.o文件b.c文件通过预处理、编译、汇编得到b.o文件a.......
  • chrome 导入密码
    chrome://flags/#password-import-exportPasswordimport......
  • linux环境千万数据导入mysql遭遇问题
    看黑马mysql视频有数据是一千万条数据,分批使用loadfile方式导入数据库表的时候出现了导入失败问题表结构CREATETABLE`tb_sku`(`id`int(11)NOTNULLAUTO_INC......
  • 【Shell】环境变量深入
    目录自定义系统环境变量自定义系统环境变量全局配置文件/etc/profile应用场景:当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量,供......
  • maven工程servlet实例之指定web资源包和导入项目依赖的jar包以及jar包冲突解决
    maven工程servlet实例之指定web资源包  在webapp包下可以直接创建jsp文件,但是在java包下我们不可以直接创建jsp文件。   如果想要在java包下创建jsp文件,就需......
  • 使用骨架创建maven的web工程 maven工程servlet实例之间指定web资源包 实例之导入项
     使用骨架创建maven的web工程操作一样把勾进行勾选找到webapp选项下一步创建就行创建好会有显示目录结构其余的都需要自己手动补齐有小蓝点的才是一个web项目, ......