Por que o shell ignora aspas nos argumentos passados a ele por meio de variáveis? [duplicado
Esta pergunta já tem uma resposta aqui:
omo armazenar um comando em uma variável no Linu 4 respostasIsso funciona como anunciado:
# example 1
#!/bin/bash
grep -ir 'hello world' .
Isso não:
# example 2
#!/bin/bash
argumentString="-ir 'hello world'"
grep $argumentString .
Despite'hello world'
sendo colocado entre aspas no segundo exemplo, grep interpreta'hello
como um argumento eworld'
como outro, o que significa que, nesse caso,'hello
será o padrão de pesquisa eworld'
será o caminho da pesquisa.
Novamente, isso só acontece quando os argumentos são expandidos a partir doargumentString
variável. grep interpreta corretamente'hello world'
como um argumento único no primeiro exempl
Alguém pode explicar por que isso é? Existe uma maneira adequada de expandir uma variável de seqüência de caracteres que preservará a sintaxe de cada caractere, para que seja interpretada corretamente pelos comandos do shel