Как генерировать имя переменной среды динамично и экспортировать его

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

temp="$(date +%s)"
echo $temp
export ${temp} = "Test value"
echo "Pass variable ${temp}"

В вышеупомянутом коде сгенерированная метка времени должна быть ключом, и "Тестовое значение" является значением для того ключа. Этот ключ и значение должны экспортировать в сессию.

Как я могу достигнуть этого сценария оболочки использования?

5
задан 2 February 2017 в 11:08

1 ответ

Вы могли использовать printf -v для создания переменных динамично, например:

temp=somename
echo $temp
printf -v $temp "Test value"
echo $somename

Это произведет "Тестовое значение".

Примечание, которое temp="$(date +%s)" не будет работать, потому что вывод $(date +%s) является числовыми, и именами переменной в Bash, не может запуститься с числа. Необходимо было бы дать ему нечисловой префикс, например:

temp="t$(date +%s)"

Для экспорта переменной можно просто сделать:

export $temp

Вот полный пример с доказательством, что переменная действительно экспортируется в среде:

temp=t$(date +%s)
echo $temp
printf -v $temp "Test value"
export $temp
sh -c "echo \$temp"

Выводы, например:

t1486060416
Test value
4
ответ дан 23 November 2019 в 09:31

Другие вопросы по тегам:

Похожие вопросы: