ไพพ์เอาต์พุต bash ไปยังอาร์กิวเมนต์ของ perl script


2

ฉันมีคำสั่ง bash ต่อไปนี้:

find repo -name '*.c'

สิ่งที่ฉันต้องการจะทำคือใช้ไฟล์ที่ส่งคืนเป็นอาร์กิวเมนต์ของสคริปต์ Perl ของฉันเพื่อให้เทียบเท่ากับการทำงาน:

perl ./myscript file1.c file2.c file3.c ...

ฉันจะทำสิ่งนี้ได้อย่างไร


สวัสดีฉันคิดว่าคุณinputสับสนarguments( inputโดยทั่วไปเกี่ยวข้องกับstandard inสตรีมของโปรแกรมซึ่งแตกต่างจากข้อโต้แย้ง) ฉันได้อัปเดตคำถามของคุณเพื่อสะท้อนสิ่งนี้ตามคำตอบที่คุณเลือกและความคิดเห็นของคุณเกี่ยวกับคำตอบ อย่าลังเลที่จะยกเลิกการเปลี่ยนแปลงหากไม่ถูกต้อง
Darth Android

คำตอบ:


0

ลอง

find repo -name '*.c' | xargs perl ./yourscript

สิ่งนี้ควรเป็นเช่นเดียวกัน

perl ./yourscript file1.c file2.c file3.c ...

1
ขอบคุณมันใช้งานได้ ปัญหาอื่นเพิ่งเกิดขึ้น: ผู้ใช้ที่รักของฉันใช้ช่องว่างในชื่อไฟล์ ฉันจะห่อทุกชื่อไฟล์ด้วย "" ก่อนแทนที่ \ ns เป็นช่องว่างได้อย่างไร ขออภัยที่โง่ แต่ฉันใหม่อย่างสมบูรณ์เพื่อทุบตี แก้ไข: พบคำตอบstackoverflow.com/a/6041695/747412
WonderCsabo

1

คุณสามารถลอง:

find repository -name '*.c' -exec perl -pe 's:\n: :g' {} +

คั่นแทนคือ:ที่นี่ไม่จำเป็นต้องใช้/ทั้งในและPerlsed

ถ้าคุณชอบของจริงpipe:

find repository -name '*.c' | xargs cat | perl -pe 's:\n: :g'

เพิ่มเวอร์ชั่น
ไพพ์

โอเค แต่ฉันมีสคริปต์ Perl ซึ่งฉันต้องให้ข้อมูลเช่นนี้: ./myscript.perl -args arg file1 file2 ฉันจะไปป์ไฟล์รายการของฉันไปที่สคริปต์นี้ได้อย่างไร ขออภัยถ้า OP ไม่ชัดเจน
WonderCsabo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.