Erro de Grep devido à expansão de variáveis com espaços
-
23-09-2019 - |
Pergunta
Eu tenho um arquivo chamado "physics 1b.sh
". Em Bash, se eu tentar
x="physics 1b"
grep "string" "$x".sh
Grep reclama:
grep: physics 1b: No such file or directory.
No entanto, quando eu faço
grep "string" physics\ 1b.sh
Funciona bem. Então, acho que o problema tem algo a ver com a variável que não está sendo expandida para incluir a barragem de que o Grep precisa reconhecer o espaço. Como faço para que isso funcione?
Usando Bash 3.2, Mac OS 10.6.
Editar:
Não importa, o problema era que X estava definido " physics 1b"
, mas quando eu fiz echo $x
Para verificar o conteúdo, Bash cortou os espaços na frente para que eu não pudesse dizer que era diferente. O primeiro caminho acima realmente funciona.
Solução
Coloque o argumento inteiro em citações duplas:
grep "string" "$x.sh"
Outras dicas
Use isso em seu script.
grep "string" "${x}.sh"
Outra maneira
grep "string" "${x}.sh"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow