Linha de comando do Unix para repetir o comando com canos

3

Eu quero escrever um script que repita uma linha de comando que geralmente contém pipes

./myscript.sh ls -lart |grep ^d

E em myscript.sh , faço um monte de coisas e, em seguida, quero executar ls -lart |grep ^d e canalizar a saída disso para outra coisa.

(desculpe antecipadamente se isso é realmente simples e tem uma solução de 1-liner).

Até agora eu tentei

$@ | someothercommand

e

$* | someothercommand

Mas sem sucesso ...

    
por bguiz 03.03.2010 / 07:00

1 resposta

8

A maneira como o shell analisa a linha de comando significa que as entradas para o script de shell serão interrompidas quando chegarem ao pipe. O que você provavelmente terá que fazer para contornar isso é colocar sua linha de comando entre aspas, então:

./myscript.sh "ls -lart |grep ^d"

Em seguida, no script, use o comando eval para executá-lo, como em:

 eval "$@" | someothercommand 
    
por 03.03.2010 / 07:59