Para responder ao título da sua pergunta, as funções do shell geralmente retornam dados imprimindo-as no stdout. Os chamadores capturam o valor de retorno com retval="$(func "$arg1" "$arg2" "$@")"
ou similar. A alternativa é passar o nome de uma variável para armazenar um valor em (com printf -v "$destvar"
).
Se o seu script não estiver funcionando, pode ser por problemas de citação. Você está perdendo citações em muitas expansões variáveis.
por exemplo,
echo "valoare ="$decrypt1
# should be:
echo "valoare =$decrypt1"
Sua versão cita a parte literal, mas deixa os dados do usuário abertos para interpretação pelo shell. Vários caracteres de espaço em branco em $decrypt1
são recolhidos em um único espaço na saída de echo
.