Ответ 1
Да, вы можете сделать, как вы упомянули выше, или как: . FILENAME
Файл не должен заканчиваться на .sh
Привет, я новичок в SHELL script. На самом деле у меня есть функция err()
в файле abc
, файлы не с расширениями .sh
, они - простой файл, но начиная с #!/bin/bash
err () {
echo "${1}" >&2
}
Теперь я импортирую его в другой файл xyz
source abc
someFunction(){
err "Failed to back up"
}
Правильно ли он импортируется?
Да, вы можете сделать, как вы упомянули выше, или как: . FILENAME
Файл не должен заканчиваться на .sh
В порядке, вот несколько советов:
Используйте соглашение об именах для функций, например, префикс имени функции f_
, например f_err
. Вызов функций не отличается от других команд, это подсказка для читателя. Это также уменьшает вероятность столкновения имен.
Вам нужен только доступ для чтения, и вам не нужен #!/bin/bash
(его просто комментарий).
В Bash некоторые параметры должны быть установлены перед разбором функций. Например, shopt -s extglob
должно выполняться до и снаружи функции, если используется расширенное подтягивание. Помещение внутри функции слишком поздно.
Bash не поддерживает переменную среды FPATH или автозагрузку (как это делает оболочка Korn).
Вам нужно экспортировать только что созданные функции
в конце abc
добавьте это:
export -f err