0 votos

línea 1: error de sintaxis cerca del token inesperado `newline' con HTML + shell script

He estado aprendiendo el shell con un gran tutorial, linuxcommand.org. Después de un montón de aprendizaje y práctica con la navegación de directorios, edición de archivos, etc, he pasado a escribir shell scripts.

Uno de los primeros tutoriales que tiene linuxcommand.org es el uso de HTML en un shell script para devolver algo de información del sistema. Puedes comprobarlo aquí . Actualmente estoy en la sección de 'Sustitución de comandos y constantes'.

Una de las primeras cosas del tutorial decía que el archivo se podía utilizar redirigiendo la salida estándar a .html:

~me$ ./página_del_sistema > página_del_sistema.html

mi script es exactamente igual al del enlace, pero lo publicaré igualmente:

(la única diferencia es que linux utiliza la var env $HOSTNAME, yo 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 comandos

~me$ ./sysinfo_page

me da el contenido de sólo el HTML, pero no está formateado y sigue mostrando 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 dar permiso chmod rwx con 755, escribo:

~$me ./página_de_información_del_sistema.html

Y obtener 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 que < > indica un marcador de posición, pero esa es la sintaxis HTML... y exactamente como funciona en el tutorial. He pensado que quizás añadiendo un <!DOCTYPE> lo arreglaría, pero no lo hizo. Mi pregunta es, ¿qué estoy haciendo mal? ¿Cómo puedo conseguir que se muestre la página HTML correctamente?

3voto

Mark Puntos 6

HTML no es un script</strkeep><strkeep>, es un lenguaje de marcas. Se necesita un navegador para representar el HTML. Para verlo, probablemente quiera

open sysinfo_page.html

0voto

Stephen M. Puntos 66

Envolver el código HTML entre comillas simples debería permitirte ejecutarlo directamente en el terminal sin errores, aunque sólo te muestra el código y eso anula el propósito de usar HTML.

Usar open como dice glenn es probablemente lo que quieres.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X