2013-08-12 4 views
1

У меня есть сценарий оболочки, который выполняет некоторые функции, такие как создание изображения, загрузка tar-файлов, экспорт переменных среды, загрузка изображений ... n задача и т. Д. У меня есть отдельные функции для каждой задачи , I Если я отправлю сценарий оболочки, он будет запускать функции один за другим. Есть ли способ сделать функции доступными для оболочки без ее выполнения. Поиск сценария оболочки сделает эту функцию доступной для оболочки, но она начнет ее выполнять.загрузить функции скрипта оболочки без его выполнения

Фактический код:

 do_task1(); 
    #some logging here 
    #shell commands 
    do_task2(); 
    #error checks 
    #.... 
    # there are lot of such things as well as user defined functions. 

Sourcing этот файл будет фактически начать выполнение этого момента вызова функции существуют. Я хочу, чтобы пользовательские функции были доступны только в командной строке.

Один из способов - использовать кодировку стиля C, т. Е. Иметь основную функцию, которая будет вызывать другие функции. Всякий раз, когда я хочу, чтобы одни функции были доступны в оболочке без exec, я мог бы просто прокомментировать этот основной вызов. Прямо сейчас у меня нет основной функции.

function main() 
    { 
    do_task1(); 
    #add all the commands and functions here. 
    do_task2(); 
    } 
main # I can comment this. 

Есть ли какой-либо другой способ (или некоторая команда оболочки) для загрузки функций в одиночку?

Зачем мне это нужно? Это будет полезно для отладки. Если я хочу запустить некоторые функции этого сценария оболочки, я могу просто запустить его.

ответ

2

Большинство снарядов (например, bash и zsh) имеют поддержку функций. Вы можете определить функции и вызвать их произвольно. Поиск файлов с определениями функций не будет выполнять их.

Смежные вопросы