He estado aprendiendo el shell con un excelente tutorial, linuxcommand.org. Después de mucho aprendizaje y práctica con la navegación de directorios, edición de archivos, etc., pasé a escribir scripts de shell.
Uno de los primeros tutoriales que tiene linuxcommand.org es usar HTML en un script de shell para devolver algo de información del sistema. Puede consultar aquí . Actualmente estoy en la sección 'Sustitución de comandos y constantes'.
Una de las primeras cosas en el tutorial dijo que el archivo podría usarse redireccionando la salida estándar a .html:
~ me $ ./sysinfo_page > sysinfo_page.html
mi script se ve exactamente como el que está en el enlace, pero lo publicaré de todos modos:
(la única diferencia es que Linux usa env var $ HOSTNAME, estoy en OS X y es $ LOGNAME)
#!/bin/bash
# sysinfo_page - Generate an HTML page based on system information
title="My System Information"
RIGHT_NOW=$(date +"%x %r %Z")
TIME_STAMP="Updated on $RIGHT_NOW by $USER"
cat <<- _EOF_
<html>
<head>
<title>
$title $LOGNAME
</title>
</head>
<body>
<h1>$title $LOGNAME</h1>
<p>$TIME_STAMP</p>
</body>
</html>
_EOF_
Cuando escribo en la línea de comando:
~ me $ ./sysinfo_page
solo me da el contenido del HTML, pero no está formateado y aún muestra las etiquetas. Supongo que al redirigir la salida estándar a una extensión .html me daría la página HTML formateada, sin las etiquetas pero no lo sabría porque, después de otorgar el permiso chmod rwx con 755, escribo:
~ $ me ./sysinfo_page.html
Y recibe este error:
./sysinfo_page.html: line 1: syntax error near unexpected token 'newline'
./sysinfo_page.html: line 1: '<html>'
Entiendo por lo que he leído < > indica un marcador de posición, pero esa es la sintaxis HTML ... y exactamente cómo funciona en el tutorial. Pensé que tal vez agregar un <!DOCTYPE>
lo arreglaría, pero no lo hice. Mi pregunta es, ¿qué estoy haciendo mal aquí? ¿Cómo puedo hacer que muestre la página HTML correctamente?