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

source ./functions.sh

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

1 ответ1

0

То, как вы используете это, разумно.
Я не могу воспроизвести вашу проблему с оболочкой 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
Здравствуйте, слово, это 1 строка my_sourced_file
Привет Густав, строка № 3 из my_sourced_file
linea 4 my_sourced_file
Сценарий 3
./go.sh: строка 4: casfsda: команда не найдена
Сценарий 5
Строка сценария Hello # 6 с использованием функции из файла ### из источника. Здесь мы заканчиваем строку ### сценария 7

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .