Описание тега ad-hoc-network
Нет, вы не можете.
Если вы хотите использовать функцию в текущей оболочке, просто определяя затем использовать его в дальнейшем:
не $ Foo() { эхо "внутри функции"; }
$ ФОО
Внутри функции
Перед контузия день, Вы можете хранить внутри функции переменная, экспортировать переменную и с помощью функции в суб-оболочки, потому что баш
поддерживает экспорт функция, Баш
будет поместить определение функции в переменную среды как:
фу=() {
эхо "внутри функции"
}
затем интерпретировать функцию заменить =
с пространством. Нет никакого намерения положить функцию в переменную и обращаться к переменной будет выполнять функцию.
Теперь, после того, как Стефан Chazelas нашли ошибку, что функция была удалена, нет функции определения хранится в обычных условиях переменной больше. Теперь экспортируемые функции будут закодированы путем добавления префикса BASH_FUNC_
и суффикс %%
, чтобы избежать столкновения с переменными окружения. Баш
переводчика теперь может определить, является ли или не они являются оболочки независимо от переменных содержание. Вы также должны определить функцию и явно экспортировать его, чтобы использовать его в суб-оболочки:
не $ Foo() { эхо "внутри функции"; }
$ экспорт -Ф ФОО
$ Баш-с ФОО
Внутри функции
В любом случае, если ваш пример работал с вашим текущим Баш
, то вы используете уязвимую версию.