![rsync 命令在 Bash 中有效,但在从 Perl 调用时挂起](https://linux22.com/image/1266014/rsync%20%E5%91%BD%E4%BB%A4%E5%9C%A8%20Bash%20%E4%B8%AD%E6%9C%89%E6%95%88%EF%BC%8C%E4%BD%86%E5%9C%A8%E4%BB%8E%20Perl%20%E8%B0%83%E7%94%A8%E6%97%B6%E6%8C%82%E8%B5%B7.png)
我有一个 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");
反而。