Если вы можете использовать общий префикс в именах переменных, вот один из способов сделать это:
# save the variables
yourprefix_width=1200
yourprefix_height=2150
yourprefix_length=1975
yourprefix_material=gravel
yourprefix_customer_array=("Acme Plumbing" "123 Main" "Anytown")
declare -p $(echo ${!yourprefix@}) > varfile
# load the variables
while read -r line
do
if [[ $line == declare\ * ]]
then
eval "$line"
fi
done < varfile
Конечно, ваш префикс будет короче. Вы можете выполнить дополнительную проверку после загрузки переменных, чтобы убедиться, что имена переменных соответствуют вашей схеме именования.
Преимущество использования declare
заключается в том, что оно более безопасно, чем простое использование eval
.
При необходимости вы можете отфильтровать переменные, помеченные как доступные только для чтения, или выбрать переменные, помеченные для экспорта.
Другие интересные команды (некоторые могут отличаться в зависимости от версии Bash):
export
- без аргументов, перечисляет все экспортируемые переменные в формате declare
declare -px
- аналогично предыдущей команде
declare -pr
- список переменных только для чтения