अन्य उत्तरों के अलावा, जो आपको बताता है कि आपको क्या करना है, मैं यह समझाने की कोशिश करता हूं कि क्या गलत था (जो आप चाहते थे।
बैश में, ifएक आदेश के साथ पालन किया जाना है। यदि इस कमांड का एग्जिट कोड 0 के बराबर है, तो वह thenभाग निष्पादित किया जाता है, और elseयदि कोई निष्पादित होता है तो वह भाग।
आप किसी भी कमांड के साथ ऐसा कर सकते हैं जैसा कि अन्य उत्तरों में बताया गया है: if /bin/true; then ...; fi
[[एक आंतरिक बैश कमांड है जो कुछ परीक्षणों के लिए समर्पित है, जैसे फ़ाइल अस्तित्व, चर तुलना। इसी तरह [एक बाहरी कमांड (यह आमतौर पर स्थित है /usr/bin/[) जो लगभग एक ही परीक्षण करता है, लेकिन ]अंतिम तर्क के रूप में इसकी आवश्यकता होती है, यही कारण है कि ]बाईं ओर एक स्थान के साथ गद्देदार होना चाहिए, जो कि ऐसा नहीं है ]]।
यहाँ आप की जरूरत नहीं है [[और न ही [।
एक और चीज है जिस तरह से आप चीजों को उद्धृत करते हैं। बैश में, केवल एक ही मामला है जहां उद्धरण के जोड़े घोंसला बनाते हैं, यह है "$(command "argument")"। लेकिन 'grep 'SomeString' $File'आप में केवल एक ही शब्द है, क्योंकि 'grep 'एक उद्धृत इकाई है, जिसे समाप्त किया जाता है SomeStringऔर फिर फिर से सम्मिलित किया जाता है ' $File'। $Fileएकल उद्धरणों के उपयोग के कारण चर को इसके मूल्य से भी नहीं बदला जाता है। ऐसा करने का उचित तरीका है grep 'SomeString' "$File"।