2009-08-20 13 views
5

जबकि 1.8.7 का निर्माण मुझे लगता है कि Shellwords::shellescape का बैकपोर्ट संस्करण है, मुझे पता है कि विधि एक 1.9 सुविधा है और निश्चित रूप से 1.8 के पुराने संस्करणों में समर्थित नहीं है। क्या किसी को पता है कि मैं कहां पा सकता हूं, या तो जेम फॉर्म में या एक स्निपेट के रूप में, रूबी के लिए बचने वाले बोर्न-शेल कमांड का एक मजबूत स्टैंडअलोन कार्यान्वयन?रूबी के लिए Shellwords.shellescape कार्यान्वयन 1.8

उत्तर

5

मैं Escape मणि के साथ जा रहा समापन, जो अतिरिक्त है डिफ़ॉल्ट रूप से उद्धरणों का उपयोग करने की सुविधा, और आवश्यक होने पर केवल बैकस्लैश-एस्केपिंग।

9

साथ ही आप केवल आपके क्या shellwords.rb से चाहते हैं कॉपी कर सकते रूबी के तोड़फोड़ भंडार के ट्रंक में (जो GPLv2 'घ):

def shellescape(str) 
    # An empty argument will be skipped, so return empty quotes. 
    return "''" if str.empty? 

    str = str.dup 

    # Process as a single byte sequence because not all shell 
    # implementations are multibyte aware. 
    str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/n, "\\\\\\1") 

    # A LF cannot be escaped with a backslash because a backslash + LF 
    # combo is regarded as line continuation and simply ignored. 
    str.gsub!(/\n/, "'\n'") 

    return str 
    end 
+0

धन्यवाद! मैं एस्केप मणि के साथ जा रहा घायल (मेरा जवाब देखें); लेकिन यह निश्चित रूप से एक व्यवहार्य विकल्प है। बीटीडब्ल्यू, रूबी आपके द्वारा लिंक की गई फ़ाइल के अनुसार दोहरी लाइसेंस प्राप्त है। – Avdi

+0

लाइसेंसिंग के संबंध में, यह छोटा स्निपेट उचित उपयोग (http://en.wikipedia.org/wiki/Fair_use) वैसे भी है। जैसा कि एफएसएफ कहता है (http://www.gnu.org/prep/maintain/maintain.html# कानूनी रूप से- महत्वपूर्ण): "कुछ पंक्तियां (15 या उससे कम) कॉपीराइट के लिए कानूनी रूप से महत्वपूर्ण नहीं हैं।" –

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