2017-07-21 13 views
5

यह पता है, इसलिए यदि आप की तरहएकाधिक पैरामीटर की अनुमति देने के लिए शेबैंग की चाल कैसे करें?

#!/usr/bin/env some-tool-accepting-yaml param1 param2 
... (yaml body) 

कुछ अब यह उम्मीद के रूप में, क्योंकि यह में विभाजित करने के बजाय "param1 param2" तर्क के साथ उपकरण फोन करेगा काम करेंगे है कि ज्यादातर shebang कार्यान्वयन एक एकल पैरामीटर का समर्थन करेंगे दो तर्क

ऐसा लगता है कि एक workaround व्यवहार की तरह कुछ का उपयोग करने के लिए है:

#!/bin/sh 
arbitrary_long_name==0 "exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "[email protected]" 

अब इस दृष्टिकोण, 2 लाइन की वजह से YAML आधारित स्क्रिप्ट अवैध होगा तो ही स्वीकार्य समाधान का एक हो सकता है कि यह भी है एक टिप्पणी, "#" से भी शुरू हो रही है।

क्या इस मुद्दे को बाईपास करने का कोई तरीका है?

+1

जो शुरू करने के लिए निष्पादन योग्य है यह 'python' है का उपयोग किए बिना एक सामान्य समाधान? क्योंकि यह संबंधित प्रश्न भी है: https://stackoverflow.com/questions/17458528/why-does-this-snippet-with-a-shebang-bin-sh-and-exec-python-inside-4-single-q –

+0

जो कामकाज आप उद्धृत कर रहे हैं वह अजीब नहीं है, पाइथन नहीं। – rici

+2

क्या आप वाईएएमएल, या एक सामान्य समाधान के लिए कामकाज में रूचि रखते हैं? पूर्व मामले में, कृपया हमें बताएं कि निष्पादन योग्य को अंततः फ़ाइल की सामग्री का उपभोग करना चाहिए? – randomir

उत्तर

3

बहुभाषी स्क्रिप्ट

launcher.sh

#!/bin/bash 

# first argument to be split 
if [[ $- != *f* ]]; then reset=1; fi 
set -f 
arg=($1) 
shift 
if [[ $reset = 1 ]]; then set +f; fi 

# other arguments 
arg+=("[email protected]") 

# launch command 
exec "${arg[@]}" 

स्क्रिप्ट

#!/path/to/launcher.sh interpreter opts 
+0

धन्यवाद लेकिन मैं अभी भी एक आत्मनिर्भर समाधान की तलाश में हूं, अगर यह भी संभव है। – sorin

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

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