क्या फ़ाइल की शुरुआत में घोषणा करना संभव है कि इसे ग्रोवी स्क्रिप्ट के रूप में निष्पादित किया जाना चाहिए?शेबांग और ग्रोवी
अन्य स्क्रीप्टिंग भाषाओं के लिए उदाहरण:
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
क्या फ़ाइल की शुरुआत में घोषणा करना संभव है कि इसे ग्रोवी स्क्रिप्ट के रूप में निष्पादित किया जाना चाहिए?शेबांग और ग्रोवी
अन्य स्क्रीप्टिंग भाषाओं के लिए उदाहरण:
#!/bin/sh
#!/usr/bin/python
#!/usr/bin/perl
यह एक #!/usr/bin/env groovy
अपना रास्ता तलाश में खोज करेंगे स्क्रिप्ट
एक सीमा यह है कि लिनक्स पर शेबैंग का उपयोग करते समय आप किसी भी तर्क (क्लासपाथ की तरह) को ग्रोवी नहीं दे सकते। [यह उत्तर] देखें (http://stackoverflow.com/a/8945888/54396)। – Patrick
this के अनुसार आप #!/usr/bin/groovy
उपयोग कर सकते हैं (यह है कि यदि उसके स्थान है)। खोज शब्द जिसे आप ढूंढ रहे हैं shebang
(जो कि पहली पंक्ति कहा जाता है) है।
धन्यवाद!यह मुझे ज्ञात था कि संयोजन #! विशेष नाम है, लेकिन मैं इसे याद रखने में विफल रहा। – Nulldevice
यदि यह आपको याद रखने में मदद करता है, तो लाइन के लिए प्रारंभिक प्रतीकों "तेज" ** ** ** और एक इंटरबैंग ** ** ** हैं, इसलिए शब्द "शेबांग" है। – mfortner
@mfortner एक अच्छा निमोनिक है, लेकिन विस्मयादिबोधक बिंदु एक धमाका है, एक interrobang नहीं। एक [interrobang] (https://en.wikipedia.org/wiki/Interrobang) संयोजन विस्मयादिबोधक बिंदु/प्रश्न चिह्न प्रतीक (‽) है। –
एक आम चाल एक स्क्रिप्ट एक से अधिक भाषा में अर्थ है कि, यह भी एक "बहुभाषी" स्क्रिप्ट के रूप में जाना लिखना है निष्पादित करने के लिए ग्रूवी।
बैश और ग्रूवी के मामले में, यह विशेष रूप से आसान है:
#!/bin/sh
//bin/true; exec groovy -cp .. "$0"
println "Hello from Groovy"
#!
) है कि ओएस बताता है एक नियमित रूप से खोल स्क्रिप्ट के रूप में स्क्रिप्ट चलाने के लिए है।/bin/true
कमांड (नो-ऑप) को आमंत्रित करती है; फिर पाथ में निष्पादन योग्य groovy पाता है और इसे स्क्रिप्ट फ़ाइल ("$0"
) पर चलाता है और अतिरिक्त तर्क, वर्तमान खोल प्रक्रिया (exec
)//
) और शेष स्क्रिप्ट चलाएगा।आप एक अधिक विस्तृत खोल भाग की जरूरत है, हो सकता है वातावरण चर की स्थापना की है, या जहां ग्रूवी स्थापित किया गया है, तो आप एक अलग चाल का उपयोग कर सकते खोज के लिए:
#!/bin/sh
'''':
echo Hello from Shell
exec groovy -cp .. "$0"
'''
println "Hello from Groovy"
'''':
दो रिक्त तार ''
के रूप में एक कोलन के बाद, जो नो-ऑप है।exec
या एक exit
"$0"
)'''':
को लंबे स्ट्रिंग '''
की शुरुआत के रूप में पार्स करेगा, इस प्रकार सभी शेल कमांड को छोड़ देगा, और फिर बाकी स्क्रिप्ट चलाएगा।
यह आसान है जब आप जानते हैं कि #! जिसे "शेबांग" कहा जाता है, जैसा कि आप टिप्पणियों से देख सकते थे मुझे इसके बारे में पता नहीं था .. – Nulldevice
ध्यान दें कि शेबांग लाइन पर पहला शब्द बाइनरी निष्पादन योग्य होना चाहिए। यदि ऐसा होता है कि आपका "ग्रोवी" प्रोग्राम एक शेल स्क्रिप्ट है, तो आपको '#!/Usr/bin/env groovy' फ़ॉर्म का उपयोग करना होगा। –
मजाकिया बात यह है कि यह वास्तव में इस पृष्ठ पर लौटता है। स्टैक ओवरफ्लो वास्तव में सबसे अच्छा संसाधन है, यहां तक कि इस तरह के सरल प्रश्नों के लिए भी। अन्य लोग सीधे यहां आएंगे और विभिन्न ब्लॉग पोस्टों के माध्यम से ब्राउज़ करने के बजाय आधिकारिक उत्तर प्राप्त करेंगे। –