No puedo obtener printf
para imprimir una variable con el descriptor% e en una secuencia de comandos bash. Se acaba de decirError inexplicable en bash: el comando printf dentro de una secuencia de comandos devuelve "número inválido"
#!/bin/bash
a=14.9
printf %e 14.9;
Sé que esto es probablemente una pregunta muy fácil, pero soy bastante nuevo para golpear y siempre utilizado echo
. Además, no pude encontrar una respuesta en ningún lado.
cuando se ejecuta me sale
$ ./test.text
./test.text: line 3: printf: 14.9: invalid number
0,000000
por lo tanto, mi problema es el LC_NUMERIC variable de configuración regional: se establece de modo que yo uso comas como separadores decimales. De hecho, se establece en una localización europea:
$ locale | grep NUM
LC_NUMERIC="it_IT.UTF-8"
pensé que me puse a en_US.UTF-8, pero, evidentemente, no lo hice. Ahora el problema cambia para encontrar cómo configurar mi variable locale. Simplemente usando
$ LC_NUMERIC="en_US.UTF-8"
no funcionará.
¿Qué obtienes? Funciona bien aquí ... –
Si bien el código funciona bien aquí (resultado 1.490000e + 01), esta página http://linuxconfig.org/bash-printf-syntax-basics-with-examples indica que el% e podría/debe colocarse dentro de las comillas. Es decir, printf "% e" 14.9; – enhzflep
@enhzflep: gracias, pero el problema no es eso. No necesita poner argumentos de printf entre comillas dobles, a menos que los argumentos en sí no lo necesiten. Además, funciona sin ellos de todos modos. Puedo establecer la variable con $ export LC_NUMERIC = "en_US.UTF-8" pero esto no es permanente. ¿Cómo puedo hacer que sea permanente? Yo manejo Cygwin. –