Подтвердить что ты не робот

Импорт функции оболочки script

Привет, я новичок в SHELL script. На самом деле у меня есть функция err() в файле abc, файлы не с расширениями .sh, они - простой файл, но начиная с #!/bin/bash

err () {
echo "${1}" >&2 
}

Теперь я импортирую его в другой файл xyz

source abc
someFunction(){ 
err "Failed to back up"
}

Правильно ли он импортируется?

4b9b3361

Ответ 1

Да, вы можете сделать, как вы упомянули выше, или как: . FILENAME

Файл не должен заканчиваться на .sh

Ответ 2

В порядке, вот несколько советов:

  • Используйте соглашение об именах для функций, например, префикс имени функции f_, например f_err. Вызов функций не отличается от других команд, это подсказка для читателя. Это также уменьшает вероятность столкновения имен.

  • Вам нужен только доступ для чтения, и вам не нужен #!/bin/bash (его просто комментарий).

  • В Bash некоторые параметры должны быть установлены перед разбором функций. Например, shopt -s extglob должно выполняться до и снаружи функции, если используется расширенное подтягивание. Помещение внутри функции слишком поздно.

  • Bash не поддерживает переменную среды FPATH или автозагрузку (как это делает оболочка Korn).

Ответ 3

Вам нужно экспортировать только что созданные функции

в конце abc добавьте это:

export -f err