Какова наилучшая/распространенная практика включения функции, которая используется из нескольких скриптов?

Какова наилучшая/распространенная практика включения функции, которая используется из нескольких скриптов?

В настоящее время я делаю это, используя файл функций, включающий все мои функции в нескольких скриптах, которые его используют:

source ./functions.sh

Один из недостатков, который я заметил, заключается в том, что номер строки, которую bash выводит при синтаксических ошибках, больше не совпадает с номером строки в исходном скрипте.

решение1

То, как вы используете его, разумно.
Я не могу воспроизвести вашу проблему соболочка bashЯ мог бы работать над (GNU bash, версия 4.1.2 и GNU bash, версия 4.3.11). Смотрите ниже:


Тестовый скрипт go.sh. Вы можете запустить его с помощью ./go.shпосле того, как сделаете его исполняемым, а chmod u+x go.shтакже/bin/bash go.sh

echo  "   ### Here we start ###"  Script line 1
source my_sourced_file
echo Script line 3
casfsda    # this is the line 4 of script
echo Script line 5
f  "Script line #6 using the function from sourced file"
echo "   ### Here we finish ###" Script line 7

Файл с функциями, который необходимо поместить в текущий каталог, называется my_sourced_file:

echo Hello word this is the 1 line of my_sourced_file
f(){ echo Hello $1 ;}
f "Gustave line number 3 of  my_sourced_file"
echo linea 4 my_sourced_file

Выход (вчерныйОшибка)

### Здесь мы начинаем ### Скрипт строка 1
Привет, слово, это первая строка my_sourced_file
Привет, Гюстав, строка номер 3 my_sourced_file
строка 4 my_sourced_file
Скрипт строка 3
./go.sh: строка 4: casfsda: команда не найдена
Строка скрипта 5
Привет, строка скрипта №6, использующая функцию из исходного файла ### Здесь мы заканчиваем ### Строка скрипта 7

  • Протестировано на GNU bash версии 4.3.11
  • и на старом GNU bash, версии 4.1.2

Связанный контент