Как эмулировать возвращаемые произвольные значения из функций оболочки?

Функции оболочки – это просто утверждения, и они не возвращают значения. Может ли кто-нибудь поделиться наилучшей практикой при написании функций, возвращающих значения в bash?

Предположим, что у меня есть функция, которая объединяет две строки:

JoinStrings() { returnValue="$1$2" } 

Как повторно использовать эту функцию в моем коде? Как получить returnValue для возврата вызывающему абоненту? Должен ли я просто использовать его как глобальный после вызова этой функции? Это приводит ко многим ошибкам с глобальными переменными везде … Как добиться повторного использования кода в оболочке?

В Unix и GNU стандартным выходом функции можно считать возвращаемое значение.

Вот пример использования расширения командной оболочки $(...) :

 JoinStrings() { echo "$1$2" } joined_strings=$(JoinStrings string1 string2) echo string1 and string2 joined are $(JoinStrings string1 string2) 

Для использования в функциях есть оператор return оболочки, который устанавливает код выхода (код состояния) команды. Код выхода – это небольшое целое число.