por que encontrar diff de retorno

0

Eu executei o seguinte comando: ff 'hac-launcher*

[root@foo log]# ff 'hac-launcher*'
./configserver/hac-launcher.log
./odb/hac-launcher.log
.
.

[root@foo log]# type ff
ff is a function
ff ()
{
    find . -type f -name $1 -print
}

However, if I try the same command right in the shell's command line, I get different results.
[root@btpvm0913 log]# find . -type f -name 'hac-launcher*' -print
./configserver/hac-launcher.log
./odb/hac-launcher.log.4
./odb/hac-launcher.log.3
./odb/hac-launcher.log.2
./odb/hac-launcher.log.1
./odb/hac-launcher.log

quando executo o comando no prompt do shell, recebo mais arquivos correspondentes, enquanto o mesmo filespec / regex quando usado na função shell corresponde a menos arquivos.

Como posso garantir que a chamada de função e a execução do comando in-line tragam os mesmos resultados?

    
por anjanbacchu 03.03.2017 / 06:00

1 resposta

2

Sua função não cita a variável $1 , portanto, o shell executa a expansão de caractere curinga no valor substituído. Como resultado, o comando real executado é

find . -type f -name hac-launcher.log -print

… baseado em arquivos no diretório atual. (E se o diretório atual tivesse mais de um arquivo correspondente, causaria um erro de sintaxe para encontrar.)

Para passar o valor da variável inalterado, use "$1" .

    
por 03.03.2017 / 07:03