บางครั้งฉันก็ใช้$PROJECT_HOME/*เพื่อลบไฟล์ทั้งหมดในโครงการ เมื่อตัวแปรสภาพแวดล้อมPROJECT_HOMEไม่ได้ถูกตั้งค่า (เพราะฉันทำsuและผู้ใช้ใหม่ไม่มีชุดตัวแปรสภาพแวดล้อมนี้) จึงเริ่มลบไฟล์ทั้งหมดจากโฟลเดอร์รูท นี่คือสันทราย
ฉันbashจะกำหนดค่าให้เกิดข้อผิดพลาดได้อย่างไรเมื่อฉันใช้ตัวแปรสภาพแวดล้อมที่ไม่ได้กำหนดในเชลล์?
[ -z "$VAR" ]ทำงานร่วมกับไม่กำหนดค่าเริ่มต้นVARเกินไป การเริ่มต้นเป็นเพียงการแสดงพฤติกรรมที่ไม่พึงประสงค์ - จุดของฉันคือถ้า vars ของคุณเคยเริ่มต้นกับสตริงที่ว่างเปล่าไม่ว่าจะด้วยวิธีใดและคุณทำงานโดยrm -r "$PROJECT_HOME"/*ไม่ได้ตั้งใจset -uคุณจะได้รับพฤติกรรม "สันทราย" IHMO จะปลอดภัยกว่าขออภัยเมื่อต้องปกป้องเนื้อหาทั้งหมดในคอมพิวเตอร์ของคุณ set -uไม่ปลอดภัย
PROJECT_HOME=/etc? เพียงแค่ตรวจสอบค่าว่างไม่เพียงพอที่จะป้องกันความหายนะ คุณไม่ควรใช้ตัวแปรจากผู้ใช้ที่ไม่น่าเชื่อถือเมื่อทำงานเป็นรูท
set -uจะทำในสิ่งที่คุณต้องการ