我想在我的 makefile 中确定 Intel Fortran 编译器的版本,所以我添加了一些使用GNU shell
函数的脚本,如下所示,
VERIFORT := $(shell ifort --version)
#VERIFORT := $(shell ifort --version | grep ^ifort) # error occurred too
.PHONY: test
test:
echo $(VERIFORT)
如果您复制上面显示的那些代码行,请确保echo
命令前有一个选项卡。
这给了我一些错误
/bin/sh: -c: line 0: syntax error near unexpected token `('
当我运行命令ifort --version
或ifort --version | grep ^ifort
在终端中时,它给出了正确的结果并且没有发生错误。
我的系统:64 位 CentOS 7
感谢任何更正建议。
[编辑]
添加更多输出细节:
对于 的grep
版本VERIFORT
,该make
命令产生以下结果,
echo ifort (IFORT) 18.0.2 20180210
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `echo ifort (IFORT) 18.0.2 20180210'
make: *** [test] Error 1
[解决了]
事实证明这是@MadScientist 提到的一个使用echo
问题
我认为您需要在
VERIFORT
打印时引用变量的值,以便 shell 不会解释特殊字符。
引用VERIFORT
变量产生以下结果(grep
版本)
echo 'ifort (IFORT) 18.0.2 20180210'
ifort (IFORT) 18.0.2 20180210
并且没有发生错误。
我还通过echo
在终端中使用对其进行了测试
echo ifort (IFORT) 18.0.2 20180210
哪个产生了同样的错误
bash: syntax error near unexpected token `('