Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Здесь документы

Мы рассмотрели два разных метода вывода текста, оба с использованием эхо COM-


манд. Есть третий способ, называемый здесь документ or здесь сценарий. Документ здесь - это дополнительная форма перенаправления ввода-вывода, при которой мы встраиваем текст в наш сценарий и вводим его в стандартный ввод команды. Работает это так:

команду << знак

текст

знак

в котором команду это имя команды, которая принимает стандартный ввод и знак строка, используемая для обозначения конца встроенного текста. Мы изменим наш сценарий, чтобы использовать здесь документ:



#! / Bin / Баш


# Программа для вывода страницы с системной информацией


TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")

TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"


кошка << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

_EOF_

#! / Bin / Баш


# Программа для вывода страницы с системной информацией


TITLE = "Отчет о системной информации для $ HOSTNAME" CURRENT_TIME = $ (date + "% x% r% Z")

TIMESTAMP = "Создано $ CURRENT_TIME, $ USER"


кошка << _EOF_

$ TITLE

$ TITLE

$ TIMESTAMP

_EOF_


Вместо того, чтобы использовать эхо, наш скрипт теперь использует кошка и здесь документ. Струна _EOF_ (что означает «Конец файла», общепринятое соглашение) был выбран в качестве токена и отмечает конец встроенного текста. Обратите внимание, что маркер должен отображаться отдельно и в строке не должно быть конечных пробелов.

Так в чем же преимущество использования здесь документа? Это в основном то же самое, что и эхо, за исключением того, что по умолчанию одинарные и двойные кавычки в этих документах теряют свое особое значение для оболочки. Вот пример командной строки:



[я @ linuxbox ~] $ foo = "какой-то текст"

[я @ linuxbox ~] $ кошка << _EOF_

> $ Foo

[я @ linuxbox ~] $ foo = "какой-то текст"

[я @ linuxbox ~] $ кошка << _EOF_

> $ Foo


> "$ foo"

> '$ foo'

> \ $ foo

> _EOF_ некоторый текст "некоторый текст" 'некоторый текст'

$ Foo

> "$ foo"

> '$ foo'

> \ $ foo

> _EOF_ некоторый текст "некоторый текст" 'некоторый текст'

$ Foo


Как видим, оболочка не обращает внимания на кавычки. Он рассматривает их как обычные персонажи. Это позволяет нам свободно вставлять кавычки в документ здесь. Это может оказаться полезным для нашей программы отчетов.

Здесь документы могут использоваться с любой командой, которая принимает стандартный ввод. В этом примере мы используем здесь документ для передачи серии команд в FTP программа, чтобы получить файл с удаленного FTP-сервера:



#! / Bin / Баш

# Скрипт для получения файла через FTP FTP_SERVER = ftp.nl.debian.org

FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << _EOF_ открыть $ FTP_SERVER

анонимный пользователь я @ linuxbox cd $ FTP_PATH

хэш

получить $ REMOTE_FILE до свидания

_EOF_

ls -l $ REMOTE_FILE

#! / Bin / Баш

# Скрипт для получения файла через FTP FTP_SERVER = ftp.nl.debian.org

FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << _EOF_ открыть $ FTP_SERVER

анонимный пользователь я @ linuxbox cd $ FTP_PATH

хэш

получить $ REMOTE_FILE до свидания

_EOF_

ls -l $ REMOTE_FILE


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



#! / Bin / Баш

# Скрипт для получения файла через FTP FTP_SERVER = ftp.nl.debian.org

#! / Bin / Баш

# Скрипт для получения файла через FTP FTP_SERVER = ftp.nl.debian.org


FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << - _EOF_ открыть $ FTP_SERVER

анонимный пользователь я @ linuxbox cd $ FTP_PATH

хэш

получить $ REMOTE_FILE до свидания

_EOF_


ls -l $ REMOTE_FILE

FTP_PATH = / debian / dists / lenny / main / installer-i386 / current / images / cdrom REMOTE_FILE = debian-cd_info.tar.gz


ftp -n << - _EOF_ открыть $ FTP_SERVER

анонимный пользователь я @ linuxbox cd $ FTP_PATH

хэш

получить $ REMOTE_FILE до свидания

_EOF_


ls -l $ REMOTE_FILE


Лучшие облачные вычисления для ОС в OnWorks: