2015-07-30 3 views
2

У меня есть функция полезности, которую я использовал много (assertReturnStatus()). Я хотел бы определить его в файле утилиты (utility.sh) и повторно использовать его в других сценариях bash.Как повторно использовать функцию, определенную в другом файле bash?

Как можно повторно использовать функцию из другого файла сценария bash? Благодарю.

ответ

8

Вам необходимо «импортировать» первый файл во второй.

Следует предупредить, что это будет включать в себя первое, поэтому любой код в первом будет выполнен, как если бы он был литерно на месте линии.

синтаксис:

# if /path/to/file exists, then include it 
[ -f /path/to/file ] && . /path/to/file 

bash Примечание также поддерживает ключевое слово source (то есть: source /path/to/file), но это не соответствует POSIX и может не работать в другой оболочке, как ash, dash, posh.

0

Если вы не хотите использовать явный источник вашего файла сценария как bufh suggests: я добавляю свои часто используемые функции в свой .bashrc, который всегда получает ресурсы, поэтому функции всегда доступны.

Как указано в примечании bufh всегда на самом деле не всегда, но только для интерактивных оболочек. Итак, если вы планируете использовать сценарии из интерактивного сеанса, вы можете поместить его в .bashrc, в противном случае - для получения явного источника.

+0

Хорошая идея, но будьте осторожны, поскольку они не будут доступны из другого сценария (то есть: один из ваших crontab или удаленных ssh), так как ваш '.bashrc' будет получен только тогда, когда ваша оболочка будет запущена в интерактивном режиме и' .profile' при запуске через login. – bufh

+0

@ bufh: Благодарю вас за это. Обновленный ответ. – eckes

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