Экспорт не работает (из функции, вызываемой для получения ее эха)

У меня есть такой код:

#!/usr/bin/env bash

test_this(){
  export ABC="ABC"
  echo "some output"
}

final_output="the otput is $(test_this)"
echo "$ABC"

К сожалению, переменная ABC не устанавливается.

Мне приходится вызывать test_this вот так, так как в моей реальной программе я привожу ему некоторые аргументы, он выполняет различные сложные операции, вызывая различные другие функции, которые по пути экспортируют то или иное (на основе эти аргументы), а в конце собирается некоторая выходная строка для возврата. Было бы плохо вызывать его два раза, один раз для экспорта и один раз для выходной строки.

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

Ответ, которым я доволен (спасибо, paxdiablo):

#!/usr/bin/env bash

test_this(){
  export ABC="ABC"
  export A_VERY_OBSCURE_NAME="some output"
}

test_this
final_output="the otput is $A_VERY_OBSCURE_NAME"
echo "$ABC"  #works!
unset A_VERY_OBSCURE_NAME
9
задан Benjamin W. 22 June 2016 в 20:48
поделиться