rsync 命令在 Bash 中有效,但在从 Perl 调用时挂起

rsync 命令在 Bash 中有效,但在从 Perl 调用时挂起

我有一个 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 脚本中运行良好。我尝试指定 /usr/bin/rsync 的完整路径,但没有帮助。

答案1

在 Perl 中,该@符号在双引号字符串中很特殊。

它试图找到一个名为的数组@hostname并扩展它。 @hostname未设置,因此它将扩展为rsync -qtz user:/tmp/p /tmp

尝试

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

反而。

相关内容