Разрешить переменную из конфигурационного файла на основе вывода - PullRequest
0 голосов
/ 29 мая 2018

У меня есть сценарий оболочки, который состоит из двух файлов: одного bash-файла (main.sh) и одного файла, содержащего все мои переменные конфигурации (vars.config).

vars.config

domains=("something.com" "else.something.com")

something_com_key="key-to-something"
else_something_com_key="key-to-something else"

В моем коде я хочу перебрать массив доменов и получить ключ для домена.

#!/usr/bin/env sh
source ./vars.config
key="_key"
for i in ${domains[@]}; 
do
    base="$(echo $i | tr . _)" # this swaps out . to _ to match the vars
    let farmid=$base$key 
    echo $farmid
done

Поэтому, когда я запускаю его, я получаю сообщение об ошибке

. / Main.sh: строка 13: let: ключ-к-чему-то: синтаксическая ошибка: ожидается операнд (токен ошибки - «ключ-к-чему-то»)

Так что на самом деле он переставляетсяэто, но я не могу сохранить его в переменной.

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете расширить переменную до значения ее значения, используя ${!var_name}, например, в своем коде вы можете сделать:

key="_key"
for i in ${domains[@]};
do
    base="$(echo $i | tr . _)" # this swaps out . to _ to match the vars
    farmid=$base$key
    farmvalue=${!farmid}
    echo $farmvalue
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...