【发布时间】:2019-08-06 12:45:05
【问题描述】:
在构建 R 包时,该命令将处理步骤输出到标准输出。从该输出中,我想捕获包的最终名称。
在下面的模拟脚本中,我显示了构建命令的输出。需要截取的部分是以building开头的最后一行。
如何让正则表达式与这些引号匹配,然后将包名捕获到变量中?
#!/usr/bin/env bash
var=$(cat <<"EOF"
Warning message:
* checking for file ‘./DESCRIPTION’ ... OK
* preparing ‘analysis’:
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
Removed empty directory ‘analysis/.idea/inspectionProfiles’
Removed empty directory ‘analysis/.idea/snapshots’
* creating default NAMESPACE file
* building ‘analysis_0.1.tar.gz’
EOF
)
regex="building [\u2018](.*?)?[\u2019]"
if [[ "${var}" =~ $regex ]]; then
pkgname="${BASH_REMATCH[1]}"
echo "${pkgname}"
else
echo "sad face"
fi
这应该适用于 macOS 和 CentOS。
【问题讨论】:
-
你有两个
regex声明。为什么?你刚试过regex='building ‘([^’]*)’(demo) 吗? -
Parameter Substitution也可以获取包名(demo)