คำสั่ง rsync ทำงานใน Bash แต่หยุดทำงานเมื่อเรียกใช้จาก Perl


0

ฉันมีคำสั่ง rsync ที่ใช้งานได้ดีจากทั้งบรรทัดคำสั่ง Bash หรือสคริปต์ Bash

คำสั่งคือ: rsync -qtz user@hostname:/tmp/p /tmp

เมื่อฉันรันคำสั่งมันจะคัดลอกไฟล์และทำงานในเวลาไม่ถึงหนึ่งวินาที

หากฉันใส่คำสั่งในสคริปต์ Perl สคริปต์จะหยุดทำงานและฉันต้องควบคุม -C เพื่อฆ่ามัน

สคริปต์ Perl เป็นเพียงแค่นี้:

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

มีอะไรผิดปกติหรือเปล่า? คำสั่งอื่น ๆ (เช่น mv และ gzip) ทำงานได้ดีในสคริปต์ Perl ฉันพยายามระบุพา ธ ที่สมบูรณ์ของ the4 ไปที่ / usr / bin / rsync แต่ก็ไม่ได้ช่วยอะไร

คำตอบ:


1

@ สัญลักษณ์เป็นพิเศษภายในสตริงที่ยกมาสองครั้งใน Perl

กำลังพยายามค้นหาอาร์เรย์ชื่อ @hostname และขยายมัน @hostname ไม่ได้ตั้งค่าดังนั้นจึงขยายเป็น rsync -qtz user:/tmp/p /tmp.

ลอง

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

แทน.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.