ไปป์ไลน์เพื่อ xargs


14

ฉันมีสคริปต์ที่ในบางสถานการณ์อาจไม่มีอะไรใน stdout ในตอนท้ายของสคริปต์ฉันผ่านบรรทัดที่ฉันมีไปยังคำสั่งอื่นโดยใช้ xargs ปัญหาของฉันคือเมื่อไม่มีอะไรใน stdout ฉันได้รับข้อความแสดงข้อผิดพลาด "การใช้งาน: โปรแกรม arg1 arg2"

ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร


8
ย้าย "แก้ไข" ของคุณในคำตอบและยอมรับคำตอบของคุณเอง วิธีนี้การค้นพบของคุณจะเป็นประโยชน์สำหรับคนอื่น meta.unix.stackexchange.com/questions/809/…
andcoz

1
ในตอนนั้นยังไม่มีคะแนนเพียงพอ จะทำมันตอนนี้
Richard

คำตอบ:


13

คุณต้องการ-rหรือ--no-run-if-emptyตัวเลือก

โปรดทราบว่าพฤติกรรมนี้ยากที่จะสร้างข้ามแพลตฟอร์ม รุ่น BSD ของการxargsรันด้วย-rโดยค่าเริ่มต้น รุ่น GNU ต้องการมัน รุ่น FreeBSD ถูกxargsละเว้น-rตั้งค่าสถานะเพื่อให้เข้ากันได้กับ GNU รุ่น Mac OS X illegal optionไม่ได้รับธงและโยนความผิดพลาด

จากนั้นคุณอาจเลือกที่จะใช้การตรวจจับระบบปฏิบัติการโดยอ้างอิงจาก$OSTYPEการเขียนสคริปต์ข้ามแพลตฟอร์ม ยิ่งไปกว่านั้นลองตรวจจับพฤติกรรมของxargsตัวเอง เรียกมันด้วย-rและหากที่ล้มเหลว (รหัสสถานะ> 0), -rทำงานได้โดยไม่ต้อง


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