एक Centos 6 मशीन पर, यह काम करता है:sh प्रति प्रक्रिया प्रतिस्थापन का समर्थन नहीं करता <(...)?
bash -c 'if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
और इस कार्य नहीं करता:
sh -c 'if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
मैं:
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `if grep -qP --line-buffered ".+" <(tail -n 1000 -F catalina.out) ; then echo "yes"; fi'
कोई बात नहीं ग्रेप और पूंछ। समस्या प्रक्रिया प्रतिस्थापन चीज़ के साथ है: <(...)
क्या कोई मुझे बता सकता है कि कौन सा sh अलग-अलग करता है?
[संपादित करें]
उत्तर के लिए धन्यवाद!
तैनाती के लिए capistrano का उपयोग करते समय समस्या उत्पन्न हुई। यह sh का उपयोग करने के लिए डिफ़ॉल्ट है, लेकिन मैंने इसे bash में बदल दिया है। कारण मैं सामान्य पाइपिंग नहीं कर सकता था कि tail -F | grep -q --line-buffered
का उपयोग करते समय, grep एक मैच के तुरंत बाद बाहर नहीं निकल जाएगा। echo "" >> catalina.out
जैसी फ़ाइल में एक और संपादन होना चाहिए और यह मेरी स्थिति में स्वीकार्य नहीं था।
'पूंछ ... | grep ...; तो ... फाई 'पॉज़िक्स मोड में डैश और बैश में मेरे लिए काम करता है। – choroba
@choroba: हाँ। लेकिन क्या यह 'sh' या' ksh' में काम करता है? –
यह ksh में काम करता है। मेरे सिस्टम पर 'sh' पॉज़िक्स मोड में डैश या बैश है। – choroba