La mayor comunidad de Debian en español

shell script á é í ó ú ñ [Solucionado]


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 ...

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

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/bash
echo -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

Relacionado con shell script á é í ó ú ñ [Solucionado]