Como eu interpretaria este comando grep que inclui $ path?

0

Sobre o (s) comando (s):

path=$1  # ---> I am not entirely sure what this means either
if grep -q -rHl --include \*.c --include \*.h "int main" $path 

Então, o que eu entendo é que ele está recursivamente procurando por arquivos .c e .h, que incluem "int main" dentro de seu conteúdo e quer ecoar o nome do arquivo também.

Mas o que exatamente o "$ caminho" significa e faz?

    
por CompEngStudent 18.11.2018 / 02:19

3 respostas

1

Em scripts de shell, existe um conceito chamado parâmetros posicionais . Essencialmente, você pode passar 'n' número de argumentos para um script de shell ou função a partir da linha de comando. Em seguida, eles são armazenados em variáveis especiais denominadas $0 , $1 , $2 e assim por diante, que são acessíveis dentro do script de shell. Um ponto a notar é que a variável $0 se refere ao próprio script.

Usando o seu script como exemplo, você pode executá-lo da seguinte maneira:

./myscript.bash /opt/src-code

Aqui, o parâmetro /opt/src-code é armazenado na variável posicional $1 . Seu script, em seguida, reatribui esse valor a outra variável chamada path . Então a declaração é efetivamente path=/opt/src-code .

A variável path é então passada para o comando grep como seu argumento. Em seguida, ele determina onde realmente executar o comando grep e procurar por correspondências de padrões. Existe um if especificado no seu script, que verifica se grep retorna algum valor.

Com efeito, as etapas acima são reduzidas para o seguinte comando grep em tempo de execução (ignorando a instrução if ):

grep -q -rHl --include \*.c --include \*.h "int main" /opt/src-code
    
por 18.11.2018 / 04:41
0

o caminho é definido como o primeiro argumento passado para o script ou a função de origem do código.

(também use # como comentário não - >)

    
por 18.11.2018 / 02:37
0

path é apenas uma variável. É criado ao ser atribuído o valor do primeiro parâmetro posicional. Em seguida, a expressão $path é substituída por esse valor, em que a expressão é (no final do comando grep).

    
por 18.11.2018 / 06:22