मैं कुछ स्क्रिप्ट लिख रहा था और कुछ ऐसा लिख रहा था
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
क्या हुआ कि मूर्खता से बाहर मैंने पहली निष्पादित किए बिना दूसरी पंक्ति को निष्पादित किया। यह पता चला कि [-d ""] सही है और अभिव्यक्ति बन गई
rm -rf /*
सौभाग्य से यह केवल एक परीक्षण मशीन थी और मैं एक सुडोल नहीं था, लेकिन हालांकि मैंने कुछ डेटा खो दिया
मेरा सवाल है, क्यों [-d ""] सच लौटाओ ?? प्रलेखन स्पष्ट रूप से बताता है कि क्या पथ मौजूद है और एक फ़ोल्डर है
मैंने उपयोग करके समस्या हल की
[ -e $ARTIFACTS ]
जो काम करने लगता है
चियर्स
rm -rf $ARTIFACTSबिना/* । यह $ARTIFACTSनिर्देशिका को भी हटा देगा , जो ठीक है, क्योंकि अगर मैं यह सुनिश्चित करना चाहता हूं कि इसमें कुछ डालने से पहले यह मौजूद है, तो मैं mkdir -p $ARTIFACTSवैसे भी निष्पादित करूंगा । यह भी अंदर छुपा नष्ट करेगा फ़ाइलें $ARTIFACTS, जो भी ठीक है, क्योंकि मैं नहीं लिखते थे rm -rf $ARTIFACTS/*, तो $ARTIFACTSनिहित कुछ भी मैं को बचाने के लिए करना चाहता था।