shell script á é í ó ú ñ [Solucionado]
el siguiente script en bash echo -n "Cuál será el título de tu ...
Hola, presento una duda que no se muy bien como solucionar
Intento con el siguiente script en bash
echo -n "Cuál será el título de tu página: "
read titulo
echo "<html>" >> index.html
echo "<body>" >> index.html
echo "$titulo" >> index.html
echo "áéíóúñ" >> index.html
echo "</body>" >> index.html
echo "</html>" >> index.html
Lo ejecuto, pero la página queda con caracteres extraños, es decir "áéíóñ" se traducen como caracteres extraños, entonces pienso que es de la codificación,
los locale de mi debian etch son UTF-8 es. Intento cambiar a ISO-8859 pero me da un error.
Entonces hago una chapuza de abrir el script con bluefish y guardarlo con codificación ISO-8859. Se arregla en parte, pero ahora cuando ejecuto el script, el propio script no traduce caracteres españoles, por ejemplo me pone
Cu?l es el t?itulo de su p?gina:
En fin, que ando hecho un lío.
Qué me aconsejais para hacer esto bien y que tanto la parte script como la web que se genere traduzcan bien los carácteres especiales propios del castellano?
Gracias
- Inicie sesión o regístrese para enviar comentarios
- 250 lecturas


Toda buena pregunta merece una buena respuesta (no dejes de leer la segunda parte).
Pero, resumiendo, te recomiendo que incluyas una cabecera de codificación utf8 en el html generado, i.e.:
echo -n "Cuál será el título de tu página: "read titulo
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"' > index.html
echo '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' >> index.html
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">' >> index.html
echo '<head>' >> index.html
echo '<title>' "$titulo" '</title>' >> index.html
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' >> index.html
echo 'áéíóúñ' >> index.html
echo '</body>' >> index.html
echo '</html>' >> index.html
P.D.: Casi lo olvido. Deberías regresar tu script a utf-8 y nunca mas usar latin-1... es pecado.
P.D.2: Cuidado con perder datos importantes. Ten en cuenta que modifiqué sustancialmente tu script al quitarle un ">" al primer echo. Ahora borrará el archivo index.html antes de volcar allí la página nueva.
"Al principio, el Hombre creó a Dios; y lo creó a su imagen y semejanza.
Y el Hombre dio a Dios multitud de nombres, y el poder de que fuera el Señor
de toda la tierra cuando al Hombre le conviniere."
Gracias Point to Null por su respuesta. El script levemente modificado y funcionando me ha quedado así:
#!/bin/bashecho -n "Cuál título: "
read titulo
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'> indexx.html
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">' >> indexx.html
echo '<head>' >> indexx.html
echo '<title>' "$titulo" '</title>' >> indexx.html
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>' >> indexx.html
echo '</head>' >> indexx.html
echo '<body>' >> indexx.html
echo 'áéíóúlñ' >> indexx.html
echo '</body>' >> indexx.html
echo '</html>' >> indexx.html