2011-07-07 5 views
6

हाय मैं एक शेल स्क्रिप्ट बना रहा हूं।शैल स्क्रिप्ट एक चर के साथ एक समारोह बुलाओ?

और एक उदाहरण कोड लग रहा है

तरह
#!/bin/bash 

test_func(){ 
{ 
    echo "It works!" 
} 

funcion_name = "test_func" 

मैं किसी भी तरह() चर "function_name"

का उपयोग कर test_func कॉल करने के लिए सक्षम होना चाहते हैं मुझे पता है कि का उपयोग कर php में संभव है call_user_func ($ function_name) या sying $ function_name()

क्या यह शेल स्क्रिप्टिंग में भी संभव है?

सहायता के लिए भारी प्रशंसा! :)

उत्तर

3
#!/bin/bash 
test_func() { 
    echo "It works!" 
} 

function_name="test_func" 

eval ${function_name} 
10

आप eval में निर्मित बैश चाहते हैं। man bash से:

eval [arg ...] The args are read and concatenated together into a single command. This command is then read and executed by the shell, and its exit status is returned as the value of eval. If there are no args, or only null arguments, eval returns 0.

तुम भी सरल चर प्रतिस्थापन के साथ पूरा कर सकते हैं के रूप में

#!/bin/bash 

test_func() { 
    echo "It works!" 
} 

function_name="test_func" 

$function_name 
+0

अपने संकेत से एक की कोशिश में है, यह बजाय एक शेल कमांड के रूप में test_func पर अमल करने की कोशिश करता है, फ़ंक्शन को कॉल करने के लिए :( –

+0

@बेन - सुनिश्चित नहीं है कि आपका क्या मतलब है - दोनों तरीके मेरे लिए काम करते हैं। जब आप किसी फ़ंक्शन को परिभाषित करते हैं तो यह अनिवार्य रूप से एक शेल कमांड बन जाता है। यदि आप काम नहीं करते हैं तो इसका एक और विशिष्ट उदाहरण देते हैं, तो यह हो सकता है सहायता –

+0

बहुत _javascvript-esque_! –