Косвенное расширение возвращает имя переменной вместо значения - PullRequest
1 голос
/ 25 июня 2019

Я пытаюсь настроить некоторые переменные, используя косвенное расширение.Согласно прочитанной документации, настройка должна быть простой:

var1=qa
qa_num=12345
varname="${var1}_ci"

echo ${!varname}

Я должен получить «12345».Вместо этого выводом является «varname».Если я удаляю восклицательный знак, я получаю «qa_ci», а не «12345»

Это должно быть относительно простым решением, поэтому я не уверен, что мне не хватает, если что-нибудь.

1 Ответ

1 голос
/ 25 июня 2019

Ваш код определяет qa_num, но varname присваивает ссылки qa_ci. В результате ваш echo расширяется несуществующим qa_ci, давая пустые результаты. Изменение назначения varname устраняет проблему в моей системе.

Пример: foo.sh:

#!/bin/bash
var1=qa
qa_num=12345
varname="${var1}_num"     # <=== not _ci

echo "${!varname}"        # I also added "" here as a general good practice

Выход:

$ bash foo.sh
12345
...