Есть ли способ включить другой сценарий оболочки в сценарий оболочки, чтобы иметь доступ к его функциям?
Подобно тому, как в PHP вы можете использовать include
директиву с другими файлами PHP, чтобы запускать функции, содержащиеся в них, просто путем вызова имени функции.
source
команде, вопрос сам по себе заключается в том, как определить местоположениеsource
файла.Ответы:
Просто поместите в свой сценарий:
Или
источник
C
языке. Здесь источник выполняет дочерний сценарий в основном сценарии. Что, если я просто хочу вызвать определенную функцию из дочернего скрипта?. script.sh
с./script.sh
. Я потерял часы, пытаясь понять, что происходитВышеуказанные ответы верны, но если запустить сценарий в другой папке, возникнут проблемы.
Например,
a.sh
иb.sh
находятся в одной папке, a include b с. ./b.sh
to include.При запуске сценария из папки, например , с
xx/xx/xx/a.sh
, файлb.sh
не найден:./b.sh: No such file or directory
.я использую
источник
Да, используйте исходный текст или короткую форму, которая просто
.
:источник
.
версия работаетsh
так же, как и Bash. «Исходный» работает только в Баше.В моей ситуации, чтобы включить
color.sh
из того же каталога вinit.sh
, мне пришлось сделать следующее.Не уверен, почему,
./
а неcolor.sh
напрямую. Содержаниеcolor.sh
следующее.Использование
File color.sh
не приводит к ошибке, но цвет не отображается. Я тестировал это,Ubuntu 18.04
иBash
версия:GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
источник
init.sh
находится (они совпадают, если вы запускали его./init.sh
в первую очередь).Синтаксис
source <file-name>
ех.
source config.sh
скрипт - config.sh
сценарий вызова -
Вы можете научиться включать сценарий bash в другой сценарий bash здесь .
источник