Я хочу генерировать имя переменной среды динамично и установить значение к той переменной. Я записал сценарий оболочки как ниже.
temp="$(date +%s)"
echo $temp
export ${temp} = "Test value"
echo "Pass variable ${temp}"
В вышеупомянутом коде сгенерированная метка времени должна быть ключом, и "Тестовое значение" является значением для того ключа. Этот ключ и значение должны экспортировать в сессию.
Как я могу достигнуть этого сценария оболочки использования?
Вы могли использовать 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