ऐसा लगता है कि यह तुलना ऑपरेटर की तरह है, लेकिन यह वास्तव में क्या करता है उदा। निम्नलिखित कोड (https://github.com/lvv/git-prompt/blob/master/git-prompt.sh#L154 से लिया गया)?"= ~" ऑपरेटर शैल स्क्रिप्ट में क्या करता है?
if [[ $LC_CTYPE =~ "UTF" && $TERM != "linux" ]]; then
elipses_marker="…"
else
elipses_marker="..."
fi
मैं वर्तमान में MinGW के तहत काम करने के लिए git-prompt
बनाने के लिए कोशिश कर रहा हूँ, और खोल MinGW के साथ आपूर्ति की इस ऑपरेटर का समर्थन नहीं लगता है:
conditional binary operator expected
syntax error near `=~'
` if [[ $LC_CTYPE =~ "UTF" && $TERM != "linux" ]]; then'
इस विशिष्ट मामले में मैं बस की जगह ले सकता elipses_marker="…"
के साथ संपूर्ण ब्लॉक (जैसा कि मुझे पता है कि मेरा टर्मिनल यूनिकोड का समर्थन करता है), लेकिन यह वास्तव में =~
क्या करता है?
बैकटिक्स में grep चलाने की कोई आवश्यकता नहीं है। 'अगर $ LC_TYPE गूंजें grep -Fq UTF && "$ TERM" परीक्षण करें! = लिनक्स; फिर –
पठनीय कोड को प्रोत्साहित करने की कोशिश कर रहा है ... मुझे इसे केवल एक 'टेस्ट' और पहली "अभिव्यक्ति" के आस-पास की पृष्ठभूमि के साथ अधिक सहज ज्ञान मिलता है, जो इसे अभिव्यक्ति की तरह दिखता है। (और grep -q भी एक त्रुटि पर सच होगा) :-) लेकिन मैं सहमत हूं। मेरे पास 'test' का उपयोग अक्सर करने की आदत है, लेकिन मुझे लगता है कि यह एक पाइप' if: ing 'से अधिक पठनीय है। – MattBianco
क्या मतलब है "grep -q एक त्रुटि पर भी सच होगा"? –