如何在变量中存储来自grep输出的值

问题描述:

我正在使用一个bash脚本,在其中我必须使用正则表达式来匹配字符串,然后将输出存储在变量中以重用它。如何在变量中存储来自grep输出的值

这里是我的脚本,

#!/bin/sh 

NAME="MET-3-get-code-from-string" 
por="$($NAME | grep -P -o -e '(?<=MET-).*?(\d+)')" #this should store 3 in variable por 

echo $por 

这个我试过很多方法,但我得到的错误:
./check.sh:MET-3-GET-问题-ID-从分支-name:找不到

如果我运行单独的grep命令,那么是的,它工作正常。但我无法存储输出。

我也试过:

por=$($NAME | grep -P -o -e '(?<=MET-).*?(\d+)') 
por=$NAME | grep -P -o -e '(?<=MET-).*?(\d+)' 

和许多其他类似的引用。

但它不工作。任何人都可以请帮助我。我没有太多的bash经验。

谢谢。

变化

por="$($NAME | grep -P -o -e '(?<=MET-).*?(\d+)')" 

por="$(echo "$NAME" | grep -P -o -e '(?<=MET-).*?(\d+)')" 

而且,你缺少一个右双引号(也许只是一个错字,应该是NAME="MET-3-get-code-from-string"

+0

它的工作。谢谢AMD :) – rut2