Как можно экспортировать из сценария источника только определенные функции

Я пытаюсь выставить из скрипта только определенные функции. Например, допустим, у меня есть скрипт 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}"
}

Как я могу вместо этого не создавать файлы (это похоже на какую-то работу) и напрямую открывать функции?

1
задан 26 May 2016 в 06:57

0 ответов

Другие вопросы по тегам:

Похожие вопросы: