linux - 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
- 为什么?
\)
在 Makefile 中使用时似乎是一个问题。
解决方案
推荐阅读
- sql - 从 SQL 中的多数据列中提取数据
- ios - 如何确定循环内所有异步调用的结束?
- javascript - Session中的PHP/JS信用卡品牌呼应
- c# - 使用单个 Entity Framework Core DbContext 来管理具有同名表的多个数据库模式
- hyperledger-fabric - 超级账本作曲家在交易过程中将参与者添加到参与者数组中
- xcode - Xcodebuild 没有这样的模块
- java - Spring Boot 不为来宾用户调用控制器
- ruby-on-rails - RoR MongoID 查找不起作用?
- node.js - 从 API 创建 Ec2 时扩展根卷
- python - 从 parseAction 返回未更改的标记会生成双重嵌套字典