2013-04-16 49 views
11

मैं लाइन में इस त्रुटिरीडायरेक्टर "<<<"?

Syntax error: redirection unexpected

हो रही है:

if grep -q "^127.0.0." <<< "$RESULT" 

मैं कैसे Ubuntu में यह चला सकता हूँ?

+2

एक एकल, बाएं कोने ब्रैकेट पुनर्निर्देशन नहीं है? < –

+0

कोड बाएं से दाएं चला जाता है। थोड़ी देर हो गई, लेकिन अगर मुझे सही याद है तो इसे रीडायरेक्ट करने के लिए '$ "$ RESULT" 'है। –

+1

आप उस आदेश के साथ क्या प्राप्त करना चाहते हैं? '$ RESULT' का मूल्य क्या है? –

उत्तर

17
if grep -q "^127.0.0." <<< "$RESULT" 
then 
    echo IF-THEN 
fi 

एक बाश-विशिष्ट चीज़ है। आप एक अलग सीमा-संगत खोल का उपयोग कर रहे हैं, तो कोशिश:

if echo "$RESULT" | grep -q "^127.0.0." 
then 
    echo IF-THEN 
fi 
+1

हल, धन्यवाद! – jmginer

+0

धन्यवाद @ हेल इसने मेरी समस्या भी हल कर दी है .. –

2

यह Ubuntu पर मेरे लिए काम करता है, अगर मैं आप ब्लॉक यदि पूरा करें:

if grep -q "^127.0.0." <<< "$RESULT"; then echo ""; fi 
+0

जैसे तारों से मेल खाते हैं <<< क्या करते हैं? यह मेरे लिए कुछ नया हो सकता है। –

+3

यह [यहां-स्ट्रिंग्स] को रीडायरेक्ट करता है (http://linux.die.net/abs-guide/x15683.html)। –

+0

http://stackoverflow.com/questions/2462317/bash-syntax-error-redirection-unexpected – jmginer

21

<<< एक पार्टी विशेष के पुनर्निर्देशन ऑपरेटर है। documentation इसे "यहां स्ट्रिंग" के रूप में संदर्भित करता है, "Here Document" का एक संस्करण।

3.6.7 Here Strings

A variant of here documents, the format is:

<<< word

The word is expanded and supplied to the command on its standard input.

एक साधारण उदाहरण:

$ cat <<< hello 
hello 

आप एक त्रुटि मिल रहे हैं, यह है कि आप पार्टी के अलावा किसी अन्य खोल का उपयोग कर कमांड को क्रियान्वित कर लिया हो। यदि आपकी स्क्रिप्ट के शीर्ष पर #!/bin/sh है, तो इसे #!/bin/bash पर बदलने का प्रयास करें।

आप /bin/sh साथ इसका इस्तेमाल करने की कोशिश करते हैं, तो यह शायद मान लिया गया << एक "यहाँ दस्तावेज़" को संदर्भित करता है, और फिर एक अप्रत्याशित < उसके बाद देखता है, जिसका परिणाम: संदेश आप कर रहे हैं कि "सिंटेक्स त्रुटि अप्रत्याशित रीडायरेक्शन" देख के।

zsh और ksh भी इस वाक्यविन्यास का समर्थन करते हैं।

+0

ksh इसका समर्थन करता है। डैश नहीं करता है। –

+0

क्या यह कहना सही होगा कि यह 'बिल्ली <(गूंज" हैलो ") के लिए एक शॉर्टेंड है? (मैं सिर्फ अपनी समझ को गहराई से पूछ रहा हूं) –

+1

@ श्रीधर-सरनोबत: काफी नहीं। 'बिल्ली <<< हैलो' किसी भी तर्क के साथ 'बिल्ली' का आह्वान करता है, जिसमें एक अस्थायी फ़ाइल से रीडायरेड किया गया है जिसमें 'हैलो' युक्त एक नई लाइन है। 'बिल्ली <(नमस्ते गूंजें) 'एक ही तर्क के साथ' बिल्ली 'को आमंत्रित करता है, जो छद्म-फ़ाइल का नाम है जिससे वह एक ही डेटा पढ़ सकता है। 'बिल्ली' किसी भी तर्क के साथ समान व्यवहार करता है और एक फ़ाइल को नाम देने के लिए एक तर्क के साथ रीडायरेक्ट बनाम बना रहता है, लेकिन अन्य आदेश अलग-अलग व्यवहार कर सकते हैं। उदाहरण के लिए, मेरे सिस्टम 'ls -l/proc/self/fd/0 <<< हैलो' अस्थायी फ़ाइल में एक सिम्लिंक सूचीबद्ध करता है, और 'echo <(echo echo)' प्रिंट्स/dev/fd/63'। –

संबंधित मुद्दे