首页 > 解决方案 > Makefile 中的 sed 和捕获组

问题描述

我正在尝试获取最后安装的内核的版本:

all:
    echo /lib/modules/$(rpm -q kernel | tail -n 1 | sed -e's/kernel-\(.*\.x86_64\)/\1/')

我收到以下错误:

$ make all
echo /lib/modules//\1/')
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [Makefile:17: all] Error 1

但直接在bash中:

$ echo $(rpm -q kernel | tail -n 1 | sed -e's/kernel-\(.*\.x86_64\)/\1/')
4.18.0-315.el8.x86_64

$ rpm -q kernel | tail -n 1 | sed -e's/kernel-\(.*\.x86_64\)/\1/'
4.18.0-315.el8.x86_64

标签: linuxbashsedmakefile

解决方案


推荐阅读