riga 1: errore di sintassi vicino a token imprevisto 'newline' con script di shell HTML +

0

Ho imparato la shell con un ottimo tutorial, linuxcommand.org. Dopo un sacco di apprendimento e pratica con la navigazione di directory, la modifica di file, ecc, ho passato alla scrittura di script di shell.

Uno dei primi tutorial di linuxcommand.org sta utilizzando HTML in uno script di shell per restituire alcune informazioni di sistema. Puoi verificarlo qui . Sono attualmente nella sezione "Sostituzione comandi e costanti".

Una delle prime cose del tutorial dice che il file potrebbe essere usato reindirizzando lo standard output a .html:

~me$ ./sysinfo_page > sysinfo_page.html

il mio script appare esattamente come quello sul link, ma lo pubblicherò comunque:

(l'unica differenza è che linux usa env var $ HOSTNAME, io sono su OS X ed è $ 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_

Quando digito nella riga di comando:

~me$ ./sysinfo_page

mi fornisce il contenuto solo dell'HTML, ma non è formattato e visualizza ancora i tag. Suppongo che reindirizzando l'output standard a un'estensione .html mi darebbe la pagina HTML formattata, senza i tag, ma non lo saprei perché, dopo aver dato il permesso chmod rwx con 755, digito:

~$me ./sysinfo_page.html

E ottieni questo errore:

./sysinfo_page.html: line 1: syntax error near unexpected token 'newline'
./sysinfo_page.html: line 1: '<html>'

Capisco da cosa ho letto che < > indica un segnaposto, ma questa è la sintassi HTML ... e esattamente come funziona sul tutorial. Ho pensato che forse aggiungere <!DOCTYPE> avrebbe risolto il problema, ma non l'abbiamo fatto. La mia domanda è, cosa sto sbagliando qui? Come posso visualizzare correttamente la pagina HTML?

    
posta samrap 12.09.2013 - 20:52
fonte

2 risposte

3

HTML non è uno script, è un linguaggio di markup. Hai bisogno di un browser per il rendering HTML. Per vederlo, probabilmente vuoi

open sysinfo_page.html
    
risposta data 12.09.2013 - 20:59
fonte
0

Il wrapping del markup HTML tra virgolette singole dovrebbe consentire di eseguirlo direttamente nel terminale senza errori sebbene mostri solo il markup e che vanifichi lo scopo dell'utilizzo di HTML.

Usare open come dichiarato da glenn è probabilmente quello che vuoi.

    
risposta data 12.09.2013 - 21:28
fonte

Leggi altre domande sui tag