J'ai un script shell bash qui a la ligne:
g=$(/bin/printf ${i})
quand ${i}
contient quelque chose comme -6
, printf
pense qu'il est passé une option. Il ne reconnaît pas l'option, ce qui produit une erreur.
si le retour à la ligne ${i}
entre guillemets, printf
pense toujours qu'il est passé une option.
g=$(/bin/printf "${i}")
si j'échapper les guillemets, la variable $g
détient alors « -6
» qui est pas ce que je veux soit.
g=$(/bin/printf \"${i}\")
Est-il absent pour échapper le tiret (-).
printf est une application BusyBox
cela fonctionne - bien que je pense qu'il y a une raison pour laquelle le script ne fait pas cela déjà. Comme il pourrait simplement utiliser l'écho. Cependant, cela fonctionne pour l'instant, mais si quelqu'un comme une meilleure solution, je serais intéressé. – Andrew
Eh bien, si c'est juste une question de% d ... alors vous pourriez juste faire 'g = $ i' et être fait sans invoquer un autre processus du tout. – ndim
$ {i} peut être n'importe quoi, nombre, chaîne, etc. Toute valeur commençant par '-' entraînera l'échec de printf. – Andrew