2016-08-29 35 views
-4

我正在寫bash腳本,它遍歷我的目錄中的文件。 我需要從一個文件名提取版本。從bash中的文件名中提取grep的版本

至於

grep -Po '(?<=develop.)[^_]+' 

工作在終端很大,bash腳本這是行不通的。

echo $filename | grep -Po '(?<=develop.)[^_]+' # great 
version = $filename | grep -Po '(?<=develop.)[^_]+' # version: command not found 

文件模式

software_1.2.1~develop.3421-1_.deb 

我希望在輸出

任何提示3421-1?

+5

不工作是指? – heemayl

+2

文件名稱的格式是什麼?你期望輸出什麼格式? – Aaron

+0

預期問題的預期行爲:/ – sjsam

回答

0

修改需要:

  • 沒有空格(或多個)周圍=bash

  • 一些過程寫在標準輸出變量的內容,所以你可以用管道,使其可在聲明變量grep的STDIN例如echo這裏(或在此字符串<<<

  • 要保存一個命令的輸出變量,可以使用命令替換$()

那麼,這樣做:

version=$(echo $filename | grep -Po '(?<=develop.)[^_]+') 

雖然在這種情況下,你可以在不使用雙引號的情況下離開,在幾乎所有其他情況下,在變量擴展周圍使用雙引號來防止分詞和文件名擴展。

相關問題