2011-07-07 34 views
6

Merhaba Bir kabuk komut dosyası oluşturuyorum.Kabuk Betiği bir değişkenle bir işlevi çağırır?

ve ben bir şekilde değişken "FUNCTION_NAME"

kullanarak) (test_func çağırmak isterler

#!/bin/bash 

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

funcion_name = "test_func" 

gibi bir örnek kod görünüyor Bunu kullanarak php mümkün olduğunu biliyorum call_user_func ($ işlev_adı) ya da kabuk işlevinde bu işlev de $ function_name()

ile mi mümkündür?

Yardım için büyük bir takdir!

cevap

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

function_name="test_func" 

eval ${function_name} 
10

Tümleşik eval. man bash Gönderen:

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.

Ayrıca, bunun yerine bir kabuk komutu olarak test_func yürütmeye çalışırsa

#!/bin/bash 

test_func() { 
    echo "It works!" 
} 

function_name="test_func" 

$function_name 
+0

senin ipuçları birini denemeden gibi basit değişken değişimi ile yapabileceğiniz işlevini çağırmak :( –

+0

@Ben - ne demek istediğinizden emin değilim - her iki yol da benim için işe yarar. Bir işlevi tanımladığınızda, aslında bir kabuk komutu haline gelir. Ne işe yaramazsa daha spesifik bir örnek verirseniz yardım –

+0

Çok _javascvript-esque_! –

İlgili konular