строка 1: синтаксическая ошибка рядом с неожиданным токеном `newline 'с помощью сценария оболочки HTML +

0

Я изучал оболочку с помощью великолепного учебника linuxcommand.org. После длительного изучения и практики навигации по каталогам, редактирования файлов и т. Д. Я перешел к написанию сценариев оболочки.

Одним из первых руководств linuxcommand.org является использование HTML в сценарии оболочки для возврата некоторой системной информации. Вы можете проверить это здесь . Сейчас я нахожусь в разделе «Подстановка команд и константы».

Одна из первых вещей в руководстве говорила, что файл можно использовать, перенаправив стандартный вывод в .html:

~ me $ ./sysinfo_page> sysinfo_page.html

мой скрипт выглядит точно так же, как и на ссылке, но я все равно опубликую его:

(единственное отличие заключается в том, что Linux использует env var $ HOSTNAME, я нахожусь на OS X и это $ 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_

Когда я набираю в командной строке:

~ me $ ./sysinfo_page

он дает мне содержимое только HTML, но он не отформатирован и по-прежнему отображает теги. Я предполагаю, что перенаправление стандартного вывода в расширение .html дало бы мне отформатированную HTML-страницу без тегов, но я бы не знал, потому что после предоставления разрешения chmod rwx с 755 я набираю:

~ $ me ./sysinfo_page.html

И получите эту ошибку:

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

Из того, что я прочитал, я понимаю, что <> обозначает заполнитель, но это синтаксис HTML ... и как именно он работает в учебнике. Я думал, что, возможно, добавление <!DOCTYPE>исправит это, но не сделал У меня вопрос, что я здесь делаю не так? Как я могу заставить его отображать HTML-страницу правильно?

samrap
источник

Ответы:

3

HTML это не скрипт, это язык разметки. Вам нужен браузер для рендеринга HTML. Чтобы просмотреть его, вы, вероятно, хотите

open sysinfo_page.html
Гленн Джекман
источник
вау я такой нуб Я знаю, что HTML не является сценарием, но я подумал, что поскольку в этом случае он содержится в сценарии оболочки, env-переменные не будут доступны. Думаю, я был неправ. Спасибо!
Самрап
0

Оборачивая HTML-разметку в одинарные кавычки, вы должны безошибочно запускать ее прямо в терминале, хотя она просто показывает вам разметку и не соответствует цели использования HTML.

Использование open как заявлено glenn, вероятно, то, что вы хотите.

Стивен М.
источник
да, я имею в виду, что я могу даже просто просмотреть файл за меньшее время, и он даст тот же результат, что и использование одинарных кавычек.
Самрап