2016-11-10 91 views
0

我正在使用一個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經驗。

謝謝。

回答

1

變化

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