अन्य उत्तरों के अलावा, जो आपको बताया गया था कि आप क्या करना चाहते हैं, मैं समझाने की कोशिश करता हूं कि क्या गलत था (जो आप चाहते थे।
बैश में, if
को आदेश के साथ पालन किया जाना है। यदि इस आदेश का निकास कोड 0 के बराबर है, तो then
भाग निष्पादित किया गया है, अन्यथा else
भाग यदि कोई निष्पादित किया गया है।
आप है कि किसी भी आदेश के साथ अन्य उत्तर में बताई गई विधि कर सकते हैं: if /bin/true; then ...; fi
[[
एक आंतरिक बैश फ़ाइल अस्तित्व, चर तुलना की तरह, कुछ परीक्षण करने के लिए समर्पित आदेश है। इसी तरह [
एक बाहरी कमांड है (यह आमतौर पर /usr/bin/[
में स्थित है) जो लगभग समान परीक्षण करता है लेकिन अंतिम तर्क के रूप में ]
की आवश्यकता होती है, यही कारण है कि ]
को बाईं ओर एक स्थान के साथ गद्देदार होना चाहिए, जो ]]
के मामले में नहीं है।
यहां आपको [[
और न ही [
की आवश्यकता है।
एक और बात यह है कि आप चीजों को उद्धृत करते हैं। बैश में, केवल एक ही मामला है जहां उद्धरण के जोड़े घोंसला करते हैं, यह "$(command "argument")"
है।लेकिन 'grep 'SomeString' $File'
में आपके पास केवल एक शब्द है, क्योंकि 'grep '
एक उद्धृत इकाई है, जिसे SomeString
के साथ जोड़ा गया है और फिर ' $File'
के साथ फिर से सम्मिलित है। एकल उद्धरण के उपयोग के कारण परिवर्तनीय $File
को इसके मूल्य के साथ भी प्रतिस्थापित नहीं किया गया है। ऐसा करने का उचित तरीका grep 'SomeString' "$File"
है।
http://stackoverflow.com/questions/4749330/how-to-test-if-string-exists-in-file-with-bash-shell – Pawel