sort "$f1"
ล้มเหลวสำหรับค่าของการ$f1
เริ่มต้นด้วย-
หรือที่นี่สำหรับกรณีของsort
บางอย่างที่เริ่มต้นด้วย+
(สามารถมีผลกระทบรุนแรงสำหรับไฟล์ที่เรียก-o/etc/passwd
เช่น)
sort -- "$f1"
(โดยที่--
สัญญาณสิ้นสุดของตัวเลือก) แก้ไขปัญหาเหล่านั้นส่วนใหญ่ แต่ยังคงล้มเหลวสำหรับไฟล์ที่เรียกว่า-
(ซึ่งsort
ตีความว่าเป็นความหมายของ stdin แทน)
sort < "$f1"
ไม่มีปัญหาเหล่านั้น
นี่คือเชลล์ที่เปิดไฟล์ นอกจากนี้ยังหมายความว่าหากไฟล์ไม่สามารถเปิดได้คุณจะได้รับข้อความแสดงข้อผิดพลาดที่มีประโยชน์มากกว่า (ตัวอย่างเช่นเชลล์ส่วนใหญ่จะระบุหมายเลขบรรทัดในสคริปต์) และข้อความแสดงข้อผิดพลาดจะสอดคล้องกันหากคุณใช้ เปลี่ยนเส้นทางทุกที่ที่เป็นไปได้เพื่อเปิดไฟล์
และใน
sort < "$f1" > out
(ตรงกันข้ามsort -- "$f1" > out
) หาก"$f1"
ไม่สามารถเปิดout
ได้จะไม่มีการสร้าง / ตัดทอนและsort
ไม่เรียกใช้
ในการล้างความสับสนที่อาจเกิดขึ้น (ดังต่อไปนี้ความคิดเห็นด้านล่าง) ซึ่งไม่ได้ป้องกันคำสั่งจากmmap()
ไฟล์หรือlseek()
อยู่ข้างใน (ไม่ใช่sort
อย่างใดอย่างหนึ่ง) หากไฟล์นั้นสามารถค้นหาได้ ข้อแตกต่างเพียงอย่างเดียวคือไฟล์ถูกเปิดก่อนหน้านี้และบน file descriptor 0 โดยเชลล์ซึ่งตรงข้ามกับคำสั่งในภายหลังโดยใช้คำอธิบายบนไฟล์ descriptor อื่น คำสั่งยังคงสามารถค้นหา / mmap ที่ fd 0 ตามที่ต้องการ เพื่อไม่ให้สับสนกับการcat file | cmd
ที่cmd
stdin ในครั้งนี้เป็นท่อที่ไม่สามารถ mmaped / ค้นหาได้