Я изучал оболочку с помощью великолепного учебника 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-страницу правильно?