Поддержание нескольких констант для нескольких скриптов bash

Поддержание нескольких констант для нескольких скриптов bash

У меня есть несколько отдельных скриптов 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

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