2012-11-08 17 views
5

क्या सिंगल और डबल कोट्स में grep पैटर्न संलग्न करने के बीच कोई अंतर है?grep पैटर्न एकल और डबल कोट्स

grep "abc" file.txt 

और

grep 'abc' file.txt 

मैं कोई रास्ता नहीं मैं अपने दम पर सभी संभव मामलों का परीक्षण कर सकते है, क्योंकि पूछ रहा हूँ, और मैं एक मामला है कि मैं गलत में ठोकर नहीं करना चाहती :)

उत्तर

5

मैं अंतर दिखाई दे यदि आप विशेष वर्ण:

पूर्व:

grep "foo$barbase" file.txt 

शैल परिवर्तनीय $barbase का विस्तार करने का प्रयास करेगा, शायद यह नहीं है कि आप क्या करना चाहते हैं।

बजाय आप लिखते हैं, तो

grep 'foo$barbase' file.txt 

$bar सचमुच लिया जाता है।

अंत में, हमेशा डिफ़ॉल्ट रूप से सिंगल कोट्स पसंद करते हैं, यह मजबूत है। '$', ' `', '\', और, जब इतिहास विस्तार सक्षम किया गया है, '':

+1

अंत में, हमेशा डिफ़ॉल्ट रूप से सरल उद्धरण पसंद करते हैं, यह मजबूत है। -> आपका मतलब एकल उद्धरण है, है ना? :) –

1
  • दोहरे उद्धरण में, निम्न वर्ण विशेष अर्थ है।

    निष्पादन के लिए वर्ण '$' और '’ retain their special meaning within double quotes ($ for variables and)।

    विशेष पैरामीटर '*' और '@' में $ 0 के बाद इनपुट के रूप में डबल कोट्स में अपना विशेष अर्थ बनाए रखते हैं।

    '$', ' `', '' ',' \ ', या नई पंक्ति उन्हें साथ एक बैकस्लैश पूर्ववर्ती सहायता से निकले जा सकता है। जब' $ 'के बाद

    बैकस्लैश अपनी विशेष अर्थ को बरकरार रखे हुए, '`', '' ',' \ ', या न्यूलाइन। विशेष अर्थों के बिना वर्णों के पीछे बैकस्लाश अनमोडिफाइड छोड़ दिया गया है।

    यह भी खोल विस्तार की जांच करने के लिए सहायक होगी:
    https://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html#Shell-Expansions

  • एकल उद्धरण खोल विस्तार पर ध्यान न दें।
+0

एक अच्छा ट्यूटोरियल: https://en.wikibooks.org/wiki/Bash_Shell_Scripting – Zhenhua