Можно ли создать сценарий bash для загрузки его функций, не выполняя его? - PullRequest
0 голосов
/ 07 августа 2020

У меня есть 2 bash скрипта:

script1.sh
script2.sh

script1. sh

command1
func1(){
}

command2
func2(){
}

Я хотел бы использовать источник script1. sh из script2. sh чтобы загружать только функции func1 () и func2 () и не запускать команды до или после.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 07 августа 2020

Джири Валента на 100% прав, что лучший способ сделать это - переместить все функции scrip1. sh в отдельный файл, например,

script1_functions.sh # move all functions from script1.sh to here
script1.sh # sources script1_functions.sh and executes commands
script2.sh # sources script1_functions.sh and executes other commands

Однако что, если script1. sh находится вне вашего контроля (например, код поставщика). В этом случае копирование функций в script2. sh кажется хорошей идеей. Однако script1. sh может быть изменен в будущем (безопасное предположение), и вы можете захотеть, чтобы script2. sh автоматически использовал измененные функции.

Но IMO, это более эффективно, чем чтобы решить эту проблему. Вот пример такого бесполезного решения: получите md5sum текущего script1. sh и убедитесь, что оно такое же в начале script2. sh. Если нет, выведите предупреждение или ошибку (и, возможно, прервите script2. sh), что script1. sh был изменен, поэтому кому-то необходимо проверить изменения и обновить либо код script2. sh, либо script2. sh md5sum script1. sh, если проверка кода определяет, что изменения не требуются.

...