Skip to content

Instantly share code, notes, and snippets.

@shellscriptx
Last active March 1, 2019 10:50
Show Gist options
  • Save shellscriptx/b1dda1209a6d361bf9a94094a3fcfea9 to your computer and use it in GitHub Desktop.
Save shellscriptx/b1dda1209a6d361bf9a94094a3fcfea9 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Lê arquivo.
conteudo=$(< arq1.yaml)
# Grupo
re='([a-zA-Z0-9_]+)'
# Lê o contéudo enquanto houver variáveis.
#
# Ex: ${var1}, ${var2} ...
#
while [[ $conteudo =~ \$\{$re\} ]]; do
# Substitui a variável casada pelo seu valor (se presente), caso
# contrário sinaliza com '!' o seu identificador para ser ignorado
# nas próximas verificações.
#
# Ex: ${var_nula} -> !{var_nula}
#
[[ ${!BASH_REMATCH[1]} ]] &&
conteudo=${conteudo//$BASH_REMATCH/${!BASH_REMATCH[1]}} ||
conteudo=${conteudo//$BASH_REMATCH/!${BASH_REMATCH#?}}
done
# Restaura identificadores ignorados.
while [[ $conteudo =~ \!\{$re\} ]]; do
conteudo=${conteudo//$BASH_REMATCH/\$${BASH_REMATCH#?}}
done
# Gera o novo arquivo.
echo "$conteudo" > arq2.yaml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment