2

Я работаю над замечательной командной строкой Linux Уильяма Шоттса-младшего в моей системе Mac OSX 10.7.5. 90% Linux, который покрывает Shotts, достаточно близки к Дарвину, чтобы я мог выяснить, или к GTEM, чтобы выяснить, что происходит. Я добрался до главы 27 "Написание сценариев оболочки" и зацикливался на создании "здесь файлов" внутри функции.

Я получаю syntax error: unexpected end of file когда я включаю следующую функцию:

report_uptime () {
  cat <<- _EOF_
    <H2>System Uptime</H2>
    <PRE>$(uptime)</PRE>
    _EOF_
  return
}

Ошибка исчезнет, если я использую следующую функцию-заполнитель:

report_uptime () {
  return
}

Кроме того, в другом месте скрипта, вне функции, я использую формат cat << _EOF_ , чтобы без проблем создать "здесь файл":

cat << _EOF_
<HTML>
      <HEAD>
            <TITLE>$TITLE</TITLE>
      </HEAD>
      <BODY>
            <H1>$TITLE</H1>
            <P>$TIME_STAMP</P>
            $(report_uptime)
            $(report_disk_space)
            $(report_home_space)
      </BODY>
</HTML>
_EOF_

Если кто-нибудь знает, что я делаю не так, буду благодарен!

1 ответ1

4

Если оператор перенаправления равен «<< -», то все начальные символы табуляции удаляются из строк ввода и строки, содержащей разделитель. Это позволяет естественным образом создавать отступы для документов в сценариях оболочки.

Если это не работает, как описано в документации, попробуйте переместить токен EOF в самое начало строки (уберите все пробелы).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .