无法在 gnu make 中将错误重定向到 /dev/null

Unable to redirect error to /dev/null in gnu make

在 gnu 脚本中,我想检查路径中是否有 intel c 编译器。 为此,我 运行 以下命令:

COMPILER_IN_PATH := $(shell icc -dumpversion | grep 2021.3.0)

稍后我测试一下是否设置了COMPILER_IN_PATH。

如果路径中有英特尔编译器,则上述命令可以正常工作。 但是,如果英特尔编译器不在路径中,虽然上述命令有效(COMPILER_IN_PATH 不会被设置),但当此行为 运行 时,我在输出中看到以下错误消息:

/bin/sh: icc: command not found

我想删除该错误消息。如何在将标准输出读入 COMPILER_IN_PATH 变量时将 stderr 重定向到某处(我想是 /dev/null)?

以下是我的一些失败尝试:

icc -dumpversion | grep 2021 > /dev/null 2>&1
Ambiguous output redirect.

icc -dumpversion | grep 2021 2> /dev/null 
icc: Command not found.
grep: 2: No such file or directory

您正在重定向 grep 命令的输出。您想要重定向 icc 命令的输出。

COMPILER_IN_PATH := $(shell icc -dumpversion 2>/dev/null | grep 2021.3.0)