shell - 在 Makefile 中使用 shell 查找 Ubuntu 版本

标签 shell ubuntu awk makefile

我正在尝试为我的工具制作特定于 Ubuntu 版本的发行版,所以我想获取操作系统名称和版本。我有以下代码:

ifeq ($(OS),Windows_NT)
    OS_POD+=win
else
    UNAME_S := $(shell uname -s)
    ifeq ($(UNAME_S),Linux)
            OS_VERS := $(shell lsb_release -a 2>/dev/null | grep Description | awk '{ print $2 "-" $3 }')
            OS_POD=./dist/linux/$(OS_VERS)
    endif
    ifeq ($(UNAME_S),Darwin)
            OS_POD=./dist/mac
    endif
endif

我使用 shell 单线:
lsb_release -a 2>/dev/null | grep Description | awk '{ print $2 "-" $3 }'

正确返回 Ubuntu-12.04.2在 Makefile 之外,但在其中它什么也不返回。也就是说,OS_VERS 变量只是 - .

我怎样才能解决这个问题?

最佳答案

在 Makefile 中,$很特别。使用$$你想让shell在哪里找到一美元。

OS_VERS := $(shell lsb_release -a 2>/dev/null | grep Description | awk '{ print $$2 "-" $$3 }')

关于shell - 在 Makefile 中使用 shell 查找 Ubuntu 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30088319/

相关文章:

linux - 修改 tar 存档中嵌套的文件

linux - 带有 Zenity 的 Shell 脚本

ruby - 在不安装 X 的情况下在 Ubuntu 服务器上安装 ruby​​ RMagick gem

Docker CE 安装错误 - Ubuntu 16.04 ppc64le (IBM Power)

regex - 匹配文件中的连续行。

awk - 呆呆的 : Local variables typed differently in SYMTAB

bash - 来自 curl 输出的 AWK 时间、日期、状态和顺序

c++ - 使用 QProcess 读取标准输出

linux - 如何在我的 shell for windows 中创建路径?

ubuntu - 我尝试从 WSL 打开 Atom 时遇到错误,直到昨天它都运行良好