Problema com um pequeno script bash

0

Frequentemente executo find em meus projetos de código quando faço uma alteração em algum lugar e tenho que descobrir onde impacta outros códigos, então pensei em escrever um script muito pequeno para facilitar, chame de blah.sh :

#!/bin/bash -eu

if [ $# -ne 3 ]; then
    echo "Three inputs required"
else
    find $1 -name $2 -exec grep -iHn $3 {} \;
fi

O problema é que recebo um erro quando o terceiro argumento (o texto que estou procurando) contém um espaço. Por exemplo, blah . '*.php' 'foo bar' retorna grep: bar: No such file or directory para cada arquivo que grep tentou explorar. Tenho certeza que é um erro bobo, eu não sou realmente de mãos dadas ...

    
por Sheljohn 22.08.2013 / 17:25

1 resposta

6

você já tentou isso:

find "$1" -name "$2" -exec grep -iHne "$3" {} +

Sem as aspas, o bash executa a divisão de palavras e geração de nome de arquivo nas variáveis, para que elas sejam transmitidas como vários argumentos.

    
por 22.08.2013 / 17:27