मेरे पास if
मेरी बैश स्क्रिप्ट है जिसमें यह जांचना है कि 2 फाइलों में से कोई मौजूद है या नहीं, अगर वे मौजूद नहीं हैं तो यह इको मैच होना चाहिए।
कोड मेरे पास है:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
लेकिन यह किसी कारण से काम नहीं करता है।
मुझे 110% यकीन है कि ये 2 फाइलें मौजूद नहीं हैं। मुझे कोई त्रुटि नहीं है, यह सिर्फ दर्ज नहीं करता है if
।
मैं स्क्रिप्टिंग को कोसने के लिए नया हूं इसलिए मुझे यकीन नहीं है कि क्या गलत हो सकता है।
[[ -f xxx ]]
अगर Xxx मौजूद है और एक नियमित फ़ाइल (या एक नियमित फ़ाइल के लिए एक सिमलिंक) सच है । यदि यह मौजूद नहीं है या यह मौजूद है या नहीं, तो यह गलत है, या अगर यह मौजूद है, लेकिन यह एक नियमित फ़ाइल (निर्देशिका, पाइप, डिवाइस, सॉकेट ...) नहीं है या यदि यह एक सिमलिंक है, तो यह गलत होगा। एक फ़ाइल जो मौजूद नहीं है या यह नहीं बता सकती है कि यह मौजूद है या नहीं या नियमित फ़ाइल नहीं है ... [[ -e $file ]] || [[ -L $file ]]
अस्तित्व के लिए एक परीक्षण के करीब है। ls -d -- "$file" > /dev/null 2>&1
और भी करीब है। और एक नियम के रूप में, इस तरह की परीक्षा में दौड़ की स्थिति होती है। शायद एक और तरीका है।
[[ ! -f /etc/.../... ]]; echo $?
प्रत्येक के लिए करो ।