Feature Request / Possible bug: Support nested variables enclosed by raw string
- Langage dominant
- Go
- Étoiles
- 907
- Forks
- 96
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
I have a weird issue where envsubst is not working as expected.
When I add only a single a default variable to the right side of the experssion it will work similarly as a default POSIX shell. But when I add additional text to the default it start to do some strange behaviour.
I'll provide some examples, I believe that will be the best description.
sh use case:
``` bash
docker run --rm -it debian:buster-slim sh
# export VAR1="shouldevaluate"
# export EMPTY_VAR=""
# export MAIN_VAR="${EMPTY_VAR:-$VAR1}"
# echo $MAIN_VAR
shouldevaluate
#
#
# export MAIN_VAR="${EMPTY_VAR:-asdqwe$VAR1}"
# echo $MAIN_VAR
asdqweshouldevaluate
#
#
# export MAIN_VAR="${EMPTY_VAR:-asdqwe $VAR1 qweasd}"
# echo $MAIN_VAR
asdqwe shouldevaluate qweasd
#
#
# export MAIN_VAR="${EMPTY_VAR:-asdqwe${VAR1}qweasd}"
# echo $MAIN_VAR
asdqweshouldevaluateqweasd
```
And this happens when I try to use the same method in envsubst.
``` bash
# cat test.template
name = ${EMPTY_VAR:-$VAR1}
name = ${EMPTY_VAR:-asdqwe$VAR1}
name = ${EMPTY_VAR:-asdqwe $VAR1 qweasd}
name = ${EMPTY_VAR:-asdqwe${VAR1}qweasd}
#
#
# envsubst < test.template
name = shouldevaluate
name = asdqwe$VAR1
name = asdqwe $VAR1 qweasd
name = asdqwe${VAR1qweasd}
```
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
The issue is about envsubst not correctly handling nested variable expansions within default values, like ${EMPTY_VAR:-asdqwe$VAR1}. Start by examining the parsing logic in the main package, likely in parse.go or subst.go. Look for how default values are processed and where variable substitution within them is applied. Run the provided test cases to reproduce the bug, then modify the parser to recursively evaluate variables inside default strings. Check existing tests in the test suite to ensure changes don't break other substitutions.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- go, shell
- Domaine
- cli, tooling
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 45/100