
У меня есть несколько отдельных скриптов bash. Они делают разные вещи и большие (по 70-100 строк каждый). Поэтому я сохранил их в отдельных файлах. Но все они связаны с центральной проблемой и, следовательно, имеют несколько общих константных значений.
Итак, для простоты, у меня есть десять константных переменных, некоторые из них строки, некоторые числа, а две — массивы, все из которых должны быть доступны в десяти различных скриптах bash. Как мне этого добиться?
Обратите внимание, что хотя есть центральный main.sh
, который может вызывать эти отдельные скрипты bash, это не всегда так. Их также можно вызывать напрямую из командной строки ( ./script1.sh
). Даже в этом случае переменные должны быть доступны скриптам.
Единственный способ, который мне пришел в голову, — это кодирование в dev/script1.temp.sh
файлах, и каждый раз, когда мне нужно запустить какой-либо файл, я запускаю build.sh
скрипт bash, который просто заменяет (с помощью grep
) все вхождения определенной константы ( $CONSTANT
) во всем файле, чтобы получить build/script1.sh
.
решение1
Поместить все константы в файл, constants.env
например. И во всех скриптах, использующих какие-либо из этих констант, поместить . constants.env
их загрузку.
Например, constants.env
:
HELLO=world
script.sh
#!/bin/bash
. constants.env
echo $HELLO
Выполнение примера:
$ ./script.sh
world