2017-05-12 27 views
0

設定ファイルに定義されているいくつかの変数とbashの入力ファイルを一致させ、変数を設定ファイル入力に置き換える必要があります。Bashの二重角括弧

ライン1における

設定ファイル

var1=value1 
var2=value2 

入力ファイル

My user value is [[var1]] and 
some lines which does not have configuration variables 
My client value is [[var2]] 
some lines which does not have configuration variables 

VAR1とVAR2及び3は、上記の行の 残りの部分は同じまま設定ファイルの値に置き換えられなければなりません。

私は、mapValsという連想配列の中のconfigを読み込み、inpArrayという配列にファイルを入力することができます。

今、私はループの中で以下のコードとマッチングしています。

for key in "${!mapVals[@]}" 
do 
     match=\[\[$key\]\] 
     echo $match 
     let index=0 
     for line in "${inpArray[@]}" 
     do 
      if [[ $line =~ $match ]]; 
      then 
        echo $line 
      fi 
      index=$(($index+1)) 
     done 
done 

私は[[VAR1]]と[[VAR2]]マッチの両方のためのLINE1と3行目の両方に一致するものを取得しています。 出力は完全一致のための方法であると交換する必要がありますどのような

[[var1]] 
My user value is [[var1]] and 
My client value is [[var2]] 

[[var2]] 
My user value is [[var1]] and 
My client value is [[var2]] 

のように見えます。 重複している場合はご意見ください。

答えて

0

は、私たちは[]

the regex for [[var1]] is => [\[][\[]var1]] 
エスケープを使用する必要が角括弧のため here

ので、答えを得ました

関連する問題