Padrão Grep que possui aspas duplas e substituição de variável entre aspas simples

Padrão Grep que possui aspas duplas e substituição de variável entre aspas simples

Então, digamos que eu tenha o seguinte padrão:

Thisisatest="1"

em um arquivo chamado file.

E eu quero combinar com oexatostring acimamaspor alguma razão, eu escolho fazer um loop em alguns números de uma lista, usá-los como variáveis ​​e tentar fazer isso:

Thisisatest="$varhere"

Onde o acima $varhereé igual ao número acima, sendo 1. (embora eu tenha mencionado o loop sobre o número,essefoi apenas um possível caso de uso futuro para isso e continua sendo um exemplo)

Agora, para facilitar as coisas, diga que quero corresponder ao acimaexatopadrãoenquantousando a variável acima e seu conteúdo:

grep 'Thisisatest="$varhere"' file

Onde arquivo contém a string Thisisatest="1"e $varherecontém o número 1.

O problema é que isso não funcionariaporquea expansão da variável não ocorre entre aspas simples (como acima).

Aqui está a tentativa fracassada de combater isso:

  1. substituição de conteúdo de substituição de variável
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"

Aqui eu uso echopara ver se ele produz ocertostring para que possa ser usado como entrada para grep...em vez disso, produza isto:

'Thisisatest="'1'"
  1. Adicione mais citações
echo "'Thisisatest="${varhere}"'"

saída:

'Thisisatest='1''
echo ''''Thisisatest=\"${varhere}\"''''

saída:

Thisisatest="'1'"

O resto é óbvio... Agora a última tentativa acima parece estar perto do que eu quero, mas ainda não é.

Alguma maneira de fazer o acima?

Responder1

grep "Thisisatest=\"${varhere}\""

funciona para mim. " \" inverte o sinalizador "Eu sou um caractere especial" do caractere seguinte por meio de UMA interpretação de shell.

informação relacionada