Я пытаюсь выставить из скрипта только определенные функции. Например, допустим, у меня есть скрипт hello_world.sh, и он имеет 2 функции, hello и world:
## hello_world.sh - name of the file, not the beginning of file
hello() { echo "Hello"; }
world() { echo "World"; }
Я хочу, чтобы скрипт use.sh экспортировал только функцию, которую я прошу для примера hello. Для этого я бы назвал функцию use из use.sh параметром, чтобы указать, какую функцию я хочу экспортировать: unset use hello world; . use.sh && use hello && hello && echo "Should succeed" world || echo "Should fail and reach here because there is no such function"
Я бы например, чтобы избежать сохранения функций во временных файлах, чтобы изолировать лучшие среды (ba) sh. Хранение во временном файле может выглядеть примерно так:
## use.sh - name of the file, not the beginning of file
#! /bin/sh
use() {
local env_file="$(/bin/mktemp)"
(. ./hello_world.sh; declare -pfx "$@") > "${env_file}"
. "${env_file}"
/bin/rm -f "${env_file}"
}
Как я могу вместо этого не создавать файлы (это похоже на какую-то работу) и напрямую открывать функции?