2016-10-17 4 views
45

में कोई फ़ाइल मौजूद है या नहीं, यह जांचने के लिए कि मैं एक शेल स्क्रिप्ट लिखना चाहता हूं जो जांचता है कि कोई निश्चित फ़ाइल, archived_sensor_data.json मौजूद है, और यदि ऐसा है, तो इसे हटा दें।शेल स्क्रिप्ट

[-e archived_sensor_data.json] && rm archived_sensor_data.json 

बहरहाल, यह एक त्रुटि

[-e: command not found 

जब मैं ./test_controller आदेश का उपयोग जिसके परिणामस्वरूप test_controller स्क्रिप्ट चलाने के लिए कोशिश फेंकता है: http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html के बाद, मैं निम्नलिखित की कोशिश की है। कोड के साथ क्या गलत है?

उत्तर

104

ब्रैकेट और -e के बीच खाली लापता।

#!/bin/bash 
if [ -e x.txt ] 
then 
    echo "ok" 
else 
    echo "nok" 
fi 
+5

अंत में मैंने दो खाली रिक्त स्थान जोड़े, एक प्रारंभिक स्क्वायर ब्रैकेट के बाद एक और समापन से पहले एक: '[-e archived_sensor_data.json] & rm archived_sensor_data.json'। स्क्रिप्ट अब काम करने लगती है। –

+0

मेरा मानना ​​है कि यह बोर्न शैल 'sh' पर भी काम करता है –

4

यहाँ एक वैकल्पिक पद्धति ls उपयोग कर रहा है:

(ls x.txt && echo yes) || echo no 

आप ls से किसी भी उत्पादन को छिपाने के लिए ताकि आप केवल हाँ देखना चाहते हैं या नहीं, stdout अनुप्रेषित और stderr/dev/null रहे हैं:

(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no 
संबंधित मुद्दे