В сценарии gnu я хочу проверить, находится ли в пути компилятор Intel c. Для этого я запускаю следующую команду:
COMPILER_IN_PATH := $(shell icc -dumpversion | grep 2021.3.0)
Позже я проверяю, установлен ли COMPILER_IN_PATH.
Если в пути находится компилятор Intel, приведенная выше команда работает нормально. Однако, если компилятор Intel не находится в пути, хотя приведенная выше команда работает (COMPILER_IN_PATH не будет установлен), я вижу следующее сообщение об ошибке в выводе при запуске этой строки:
/bin/sh: icc: command not found
Я хотел бы избавиться от этого сообщения об ошибке. Как перенаправить stderr куда-нибудь (полагаю, в /dev/null) при чтении stdout в переменную COMPILER_IN_PATH?
Вот некоторые из моих неудачных попыток:
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)
Какая у тебя оболочка? С любой разумной оболочкой
grep 2021 2> /dev/nullне должен выдавать ошибкуgrep: 2: No such file or directory