टी एल; डॉ
कोई अन्य उत्तर वास्तव में आपके मूल प्रश्न को संबोधित नहीं करता है कि कमांड एक सिंटैक्स त्रुटि क्यों देता है। इस बीच एक लापता आदेश के कारण होता है तो और किसी और ।
एक मिसिंग कमांड
आपका मूल कोड इस तरह दिखता है:
if lsof "$filename" > /dev/null
then
# file is open
else
echo "deleting $filename"
rm "$filename"
fi
समस्या यह है कि आपके पास तब और किसी के बीच एक टिप्पणी है , लेकिन टिप्पणी को एक आदेश के रूप में नहीं माना जाता है। संक्षेप में, आप अपनी समस्या (संरचनात्मक रूप से बोलना) को इस प्रकार से लिख सकते हैं:
$ if true; then else echo; fi
bash: syntax error near unexpected token `else'
बॉर्न बिलिन के साथ अपने सिंटैक्स को ठीक करें
इससे पहले कि वास्तविक आदेशों रखकर इस समस्या को ठीक कर सकते हैं और कुछ है, लेकिन अपने आप में एक टिप्पणी नहीं करेंगे। अगर-तब अनुभाग खाली नहीं हो सकता; यदि आप एक प्लेसहोल्डर चाहते हैं, तो आप कोलन बिलिन का उपयोग कर सकते हैं । उदाहरण के लिए:
$ if true; then :; else echo; fi
बस तब के:
बीच अनुभाग में रखने और अन्यथा आप अनुभव कर रहे वाक्यविन्यास त्रुटि को ठीक कर देंगे।