2009-06-19 6 views

ответ

51

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

source function.sh 

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

+3

Функция.sh может быть в любом месте вашего PATH. Если bash находится в режиме posix, он не будет отображаться в текущем каталоге. Все это объясняется на странице руководства. – camh

+0

Правда, я перепутал это с другими вещами. –

+0

Скажем, 'function.sh' имеет в нем некоторый код. Будет ли 'source function.sh' также выполнять код? – user1527227

9

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

. $HOME/utility.shinc 

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

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

-2

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

+0

Почему вы копируете ответы, которые были опубликованы ... 8 лет назад? –

+0

Для лучшего понимания. Я написал более кратко, чем предыдущий. –

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