У меня есть такой код:
#!/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