Você pode usar eval
, mas o próximo mantenedor irá amaldiçoar seu nome. Você tentou apenas anexar a variável ao usar os dados analisados ou expandir a variável quando criar os dados?
Se o arquivo for criado dessa forma, você não pode usar apenas algumas técnicas [redigidas] para convencer o remetente a mudar suas maneiras perversas?
Se a mudança literal não for possível, você deve ter controle sobre quais variáveis são possíveis. Caso contrário, seu script estará vulnerável a todos os tipos de ataques de injeção, como entradas como 3|sample1.txt|$(rm --arr --eff /)/operation/
. Como você obviamente tem isso sob controle, você pode fazer algumas substituições literais de variáveis com seus valores caso a caso:
IFS='/' read -a pathnames <<< "$fpath"
for pathname in "${pathnames[@]}"
do
if [ "${pathname::1}" = '$' ]
then
variable_name="${pathname:1}"
printf '%s' "${!variable_name}"
else
printf '%s' "$pathname"
fi
done
Com algum clichê adicional para adicionar barras entre nomes de caminho.