2017-02-02 16 views
0

入力文字列を受け取り、先頭に特定のタグが含まれていない場合は、先頭にタグを追加します。以下は、私が書いたスクリプトです正規表現の比較時に変数を含む正規表現

#! /bin/bash 

message=$1 

tag="hello" 

filter="^$tag.*" 

if [[ ! $message =~ $filter ]]; then 
    message="$tag $message" 
fi 

echo $message 

これは、タグに正規表現に特有のキーワードが含まれていない限り、うまくいきます。

たとえば、タグが[hello]に設定されている場合、角括弧はキーワードであるためフィルタは機能しません。

filterを変更して、tagに含まれるキーワードを無視するにはどうすればよいですか?

+0

? – Inian

答えて

1

あなたは、シェルパターンの代わりに、正規表現とquote them to avoid interpretation of meta charactersを使用することができますどのようにスクリプトを実行している

if [[ $message != "$tag"* ]]; then 
    message="$tag $message" 
fi 
+0

ありがとうございます。 '[[$ message =〜^" $ tag "。*]]'はうまくいった – BAdhi