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

0

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?

    
pregunta samrap 12.09.2013 - 20:52

2 respuestas

3

HTML no es un script, es un lenguaje de marcado. Necesitas un navegador para renderizar HTML. Para verlo, probablemente quieras

open sysinfo_page.html
    
respondido por el glenn jackman 12.09.2013 - 20:59
0

Ajustar su marca HTML en comillas simples le permitirá ejecutarlo directamente en el terminal sin error, aunque solo le muestra la marca y eso anula el propósito de usar HTML.

El uso abierto como lo indica glenn es probablemente lo que quieres.

    
respondido por el Stephen M. 12.09.2013 - 21:28

Lea otras preguntas en las etiquetas