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