O problema que você está tendo é que, usando ( ... )
, você está executando todos os comandos em um sub-shell do processo atual. Como este subshell é um processo filho, nenhuma variável que você tenha atribuído será passada para o pai (seu script principal). Isso significa que a variável nunca alcança seu comando tee
.
A solução é bastante simples, dentro do seu script você deve atribuir a variável antes de iniciar os colchetes, esta variável estará disponível para o comando tee
.
Por exemplo, se a extensão de arquivo que você deseja adicionar for .txt
:
foo=txt
(
commands from fetch.sh
) | tee log."$foo"
Note que usei aspas duplas, que o shell expandirá, para garantir que, no caso improvável de que sua extensão contenha espaços, ele ainda esteja intacto após a expansão.
Se você precisar definir foo
dentro de fetch.sh, precisará usar outro método de agrupar os comandos do seu script.