У меня есть команда rsync, которая отлично работает из командной строки Bash или скрипта Bash.

Команда: rsync -qtz user@hostname:/tmp/p /tmp

Когда я запускаю команду, она копирует файл и запускается менее чем за секунду.

Если я помещаю команду в сценарий Perl, сценарий зависает, и мне нужно Control-C, чтобы убить его.

Скрипт Perl это просто:

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

Что может быть не так? Другие команды (например, mv и gzip) отлично работают в скрипте Perl. Я попытался указать полный путь 4 к /usr /bin /rsync, но это не помогло.

1 ответ1

1

Символ @ является специальным внутри строк в двойных кавычках в Perl.

Он пытается найти массив с именем @hostname и развернуть его. @hostname не задано, поэтому оно расширяется до rsync -qtz user:/tmp/p /tmp .

Пытаться

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

вместо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .