У меня есть внешняя программа (вид генератора токенов аутентификации), которая выводит две строки, две части моей аутентификации.Настройка переменных окружения из двух строк вывода
$ get-auth
SomeAuthString1
SomeAuthString2
Тогда, я хочу, чтобы экспортировать эти строки в переменную окружения, скажем, AUTH
и PIN
.
Я пробовал несколько вещей в bash, но ничего не работает.
Например, я могу сделать:
get-auth | read -d$'\4' AUTH PIN
но терпит неудачу. AUTH и PIN не сохраняются. Если я сделаю
get-auth | paste -d\ -s | read AUTH PIN
он также терпит неудачу. Единственный способ получить данные - сделать
get-auth | { read AUTH; read PIN; }
, но, очевидно, только в подоболочке. Экспорт из этого не имеет результата
Немного исследований, и я нашел this answer, что может означать, что я не могу этого сделать (читая переменную от чего-то, пробитого в чтение). Но я могу ошибаться. Я также обнаружил, что если я открою подоболочку с {
перед чтением, значения будут доступны в подоболочке, пока я не закончу ее }
.
Есть ли способ установить переменные среды из двухстрочного вывода? Я, очевидно, не хочу сохранять это в файле, и я не хочу настраивать FIFO только для этого. Это единственные способы добиться этого?
Это что-то вроде: 'authstrings = \' get-auth \ '; экспорт AUTH = $ authstrings [0]; экспорт PIN = $ authstrings [1] 'возможно? – Gavin
Обратите внимание, что '{...}' не создает подоболочку, а только группу. Это, как вы обнаружили, * pipe *, который создает подоболочку. – chepner