gpt4 book ai didi

bash - 在 Makefile 中提取操作系统名称和版本号

转载 作者:行者123 更新时间:2023-12-04 18:38:09 25 4
gpt4 key购买 nike

仅当系统是 Ubuntu 11.04 或更高版本时,我才想在 makefile 中设置一些环境变量。
我可以使用提取操作系统名称cat /etc/lsb-release | grep DISTRIB_ID| cut -d "=" -f 2和版本号使用cat /etc/lsb-release | grep DISTRIB_RELEASE| cut -d "=" -f 2
所以在我的makefile中我做
OSNAME := $(shell cat /etc/lsb-release | grep DISTRIB_ID| cut -d "=" -f 2)
我收到 /etc/lsb-release 的错误未找到。

我的方法 2 是使用 lsb_release -si-sr ,尽管这些命令在终端中运行良好,但以下打印出 Ubuntu 在 Makefile 中找不到

ifeq ($(shell lsb_release -si),Ubuntu)  
$(info YES UBUNTU DETECTED)
else
$(info NO UBUNTU DETECTED)
endif

我做错了什么是否有条件设置环境变量的干净方法是系统是 Ubuntu 11.04 或更高版本?

最佳答案

尝试这个

if [ -f /etc/lsb-release ]; then
. /etc/lsb-release
OS=$DISTRIB_ID
VER=$DISTRIB_RELEASE
else
OS=$(uname -s)
VER=$(uname -r)
fi

echo $OS
echo $VER

或者像这个排序命令
OS=$(lsb_release -si)
ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VER=$(lsb_release -sr)

echo $OS
echo $VER
echo $ARCH

或者在makefile中你需要这样
UNAME_OS := $(shell lsb_release -si)

ifeq ($(UNAME_OS),Ubuntu)
$(info YES UBUNTU DETECTED)
else
$(info NO UBUNTU DETECTED)
endif

关于bash - 在 Makefile 中提取操作系统名称和版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com