2016-08-29 19 views
-4

私のディレクトリにあるファイルを反復処理するbashスクリプトを書いています。 1つのファイル名からバージョンを抽出する必要があります。grepでファイル名からbashのバージョンを抽出します。

限り、端末で素晴らしい作品

grep -Po '(?<=develop.)[^_]+' 
として、bashスクリプトでそれが機能していません。

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

ファイルパターンIが出力

どれ先端で3421から1期待

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

?必要

+5

有効ではありませんか? – heemayl

+2

ファイル名の形式は何ですか?出力形式はどのようなものですか? – Aaron

+0

質問に期待される動作が期待されます。/ – sjsam

答えて

0

変更:

  • ない空白(S)=周りbash

  • でそうあなたがそれを利用できるようにパイプを使用することができますSTDOUTに変数の内容を書き込み、いくつかのプロセスを変数を宣言しながら、 grepさんのSTDIN echoここで(あるいはここでは、文字列<<<

  • んので、$()

コマンド置換を使用して、変数にコマンドの出力を保存するには:

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

が、この場合、ほとんどの場合、単語の分割やファイル名の拡張を防ぐために、変数展開を二重引用符で囲みます。

関連する問題