est-il posible pour imprimer la valeur NUM
(100
), alors que je dois utiliser uniquement '
et non "
ksh + argument PARAM
# NUM=100
# PARAM='some text $NUM'
# echo $PARAM
some text $value
droite Imprimer
some text 100
est-il posible pour imprimer la valeur NUM
(100
), alors que je dois utiliser uniquement '
et non "
ksh + argument PARAM
# NUM=100
# PARAM='some text $NUM'
# echo $PARAM
some text $value
droite Imprimer
some text 100
extrêmement dangereux, mais : eval echo $PARAM
Je vous déconseille fortement ceci: et si param contient une commande destructive dans les backticks? Réfléchissez à votre conception ou repensez votre langage d'implémentation.
Vous pouvez au moins échapper et $()
constructions contre-apostrophes première:
NUM=100
PARAM='this is $NUM -- `rm foo` -- $(rm bar)'
param_safer=$(echo "$PARAM" | sed 's/`/\\`/g; s/\$(\([^)]\+\))/\\$\\(\1\\)/g')
eval echo "$param_safer"
sorties: this is 100 -- `rm foo` -- $(rm bar)
Utilisez à double citations à la place de unique citations comme des guillemets simples ne permettent pas d'interpolation variable:
NUM=100
PARAM="some text $NUM"
echo $PARAM
EDIT: Depuis que je ne suis pas autorisé à utiliser des guillemets doubles, vous pouvez utiliser concaténation comme:
NUM=100
PARAM='some text '$NUM
echo $PARAM
Pourquoi devez-vous utiliser uniquement des guillemets simples? La substitution de variable ne fonctionne pas entre guillemets simples. –