Можно ли использовать функцию bash в разных скриптах? - PullRequest
34 голосов
/ 19 июня 2009

У меня есть функция, на которую я хочу ссылаться и использовать в разных сценариях. Есть какой-либо способ сделать это? Я не хочу переписывать одну и ту же функцию для разных скриптов. Спасибо.

Ответы [ 3 ]

66 голосов
/ 19 июня 2009

Конечно - в вашем скрипте, где вы хотите использовать функцию, вы можете написать команду типа

source function.sh

, что эквивалентно включению содержимого function.sh в файл в точке, где выполняется команда. Обратите внимание, что function.sh должен находиться в одном из каталогов в $PATH; если это не так, вам нужно указать абсолютный путь.

10 голосов
/ 19 июня 2009

Да, вы можете локализовать все свои функции в общем файле (или файлах). Это именно то, что я делаю со всеми своими служебными функциями. У меня есть один utility.shinc в моем домашнем каталоге, который используется всеми моими программами с:

. $HOME/utility.shinc

, который выполняет скрипт в контексте текущей оболочки. Это важно - если вы просто запустите сценарий включения, он будет работать в подоболочке, и любые изменения не будут распространяться на текущую оболочку.

Вы можете сделать то же самое для групп сценариев. Если это часть «продукта», я бы хотел поместить все сценарии и все включенные сценарии в один каталог оболочки, чтобы все было локализовано.

0 голосов
/ 04 сентября 2017

Да .. ты можешь! Добавьте source имя_функции в ваш скрипт. Я предпочитаю создавать переменную, например .VAR = $ (funtion_name), если вы добавляете исходное имя функции после #! / Bin / bash, тогда ваш скрипт сначала выполняет задачу импортированной функции, а затем текущую задачу скрипта, поэтому лучше создавать переменную и использовать где угодно в сценарии. спасибо .. Надеюсь, его работа для вас:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...