Shell Script вызывает функцию с переменной? - PullRequest
6 голосов
/ 07 июля 2011

Привет, я создаю сценарий оболочки.

, и пример кода выглядит как

#!/bin/bash

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

funcion_name = "test_func"

Я хочу как-то иметь возможность вызывать test_func () с помощью переменной "имя_функции"

Я знаю, что это возможно в php, используя call_user_func ($ function_name) или sying $ function_name ()

Возможно ли это и в сценариях оболочки?

Огромная благодарность заПомогите!:)

Ответы [ 2 ]

10 голосов
/ 07 июля 2011

Вы хотите встроенный bash 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
3 голосов
/ 07 июля 2011
#!/bin/bash
test_func() {
    echo "It works!"
}

function_name="test_func"

eval ${function_name}
...