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 $varhere
conté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:
- substituição de conteúdo de substituição de variável
echo "${varhere/[0-9]*/Thisisatest=\"$varhere\"}"
Aqui eu uso echo
para ver se ele produz ocertostring para que possa ser usado como entrada para grep...em vez disso, produza isto:
'Thisisatest="'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.