comando rsync funciona no Bash, mas trava quando invocado a partir do Perl

0

Eu tenho um comando rsync que funciona bem a partir da linha de comando Bash ou de um script Bash.

O comando é: rsync -qtz user@hostname:/tmp/p /tmp

Quando eu executo o comando, ele copia o arquivo e é executado em menos de um segundo.

Se eu colocar o comando em um script Perl, o script trava, e eu tenho que Control-C para matá-lo.

O script Perl é exatamente isso:

system("rsync -qtz user@hostname:/tmp/p /tmp");

O que poderia dar errado? Outros comandos (como mv e gzip) funcionam bem no script Perl. Eu tentei especificar o caminho completo para / usr / bin / rsync, mas isso não ajuda.

    
por Mike W 20.02.2011 / 02:44

1 resposta

1

O símbolo @ é especial dentro de strings com aspas duplas em Perl.

Ele está tentando encontrar uma matriz chamada @hostname e expandi-la. @hostname não está definido, por isso está expandindo para rsync -qtz user:/tmp/p /tmp .

Tente

system("rsync -qtz user\@hostname:/tmp/p /tmp");

em vez disso.

    
por 20.02.2011 / 02:56

Tags