我有一个 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");
反而。