如何在变量中存储来自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"
)
它的工作。谢谢AMD :) – rut2