В bash, как и в большинстве языков, eval
- это то, что нужно избегать. См., Например, FAQ Грега: Команда Eval и проблемы безопасности
Вы можете определить parent_function
следующим образом:
parent_function=delegate_function
В любое время, когда вы хотите использовать parent_function
для отправки delegate_function
, просто запустите:
$ $parent_function
output from delegate
Определим delegate_function
и parent_function
и запустим $ parent_function
:
$ delegate_function() { echo "delegate version 1"; }
$ parent_function=delegate_function
$ $parent_function
delegate version 1
Теперь давайте изменим delegate_function
и снова запустим $ parent_function
:
$ delegate_function() { echo "delegate version 2"; }
$ $parent_function
delegate version 2
$ parent_function
мгновенно обновится, чтобы запустить новую версию delegate_function.
Давайте создадим нашу функцию-делегат:
$ delegate_function() { echo "delegate function executed"; }
Давайте назначим какое-нибудь имя:
$ parent_function=some_name
Теперь давайте продемонстрируем динамическое присвоение этого имени:
$ typeset $parent_function=delegate_function
$ $some_name
delegate function executed
Все операции ввода-вывода для всех дисков по-прежнему должны проходить через один порт USB, поэтому, если вы пытаетесь получить к ним доступ одновременно, производительность будет низкой. Если вы обращаетесь только к одному за раз, то это не будет отличаться только потому, что другие диски подключены, но к ним в данный момент нет доступа.