Respuesta corta: vea BashFAQ # 50 ("Estoy tratando de poner un comando en una variable, ¡pero los casos complejos siempre fallan!").
Respuesta larga: poner comandos (o partes de comandos) en variables y luego recuperarlos intactos es complicado. Cuando el shell expande una variable en la línea de comando, si la variable estaba entre comillas dobles no se analiza; si no estaba entre comillas, los espacios se analizan como saltos de argumento, pero las comillas y el escape no se analizan. En cualquier caso, poner comillas en el valor de la variable no hace nada útil.
Por lo general, la mejor manera de hacer este tipo de cosas es usar una matriz en lugar de una simple variable de texto:
echono muestra lo que crees que es. Intente printargs() { printf "'%s' " "$@"; echo; }; printargs $FLAGS; printargs "$FLAGS"ver por qué ninguna de estas opciones funciona.
Respuestas:
Respuesta corta: vea BashFAQ # 50 ("Estoy tratando de poner un comando en una variable, ¡pero los casos complejos siempre fallan!").
Respuesta larga: poner comandos (o partes de comandos) en variables y luego recuperarlos intactos es complicado. Cuando el shell expande una variable en la línea de comando, si la variable estaba entre comillas dobles no se analiza; si no estaba entre comillas, los espacios se analizan como saltos de argumento, pero las comillas y el escape no se analizan. En cualquier caso, poner comillas en el valor de la variable no hace nada útil.
Por lo general, la mejor manera de hacer este tipo de cosas es usar una matriz en lugar de una simple variable de texto:
fuente
eval es otra opción:
Ver también:
fuente
No veo el problema :
Tal vez necesite citar nuevamente el valor:
fuente
echo
no muestra lo que crees que es. Intenteprintargs() { printf "'%s' " "$@"; echo; }; printargs $FLAGS; printargs "$FLAGS"
ver por qué ninguna de estas opciones funciona.