Вход/Регистрация
Командная строка Linux
вернуться

Шоттс Уильям

Шрифт:

#!/bin/bash

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

TITLE="System Information Report For $HOSTNAME"

echo "<HTML>

<HEAD>

<TITLE>$TITLE</TITLE>

</HEAD>

<BODY>

<H1>$TITLE</H1>

</BODY>

</HTML>"

Попутно мы дополнили название, добавив в конец значение переменной командной оболочки HOSTNAME. Это — сетевое имя машины.

Присваивание значений переменным и константам

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

переменная=значение

где переменная — это имя переменной, а значение — строка. В отличие от некоторых других языков программирования, командная оболочка не заботится о типах значений, присваиваемых переменным; она все значения интерпретирует как строки. Существует возможность заставить командную оболочку ограничить круг присваиваемых значений целыми числами, задействовав команду declare с параметром -i, но, как и объявление переменных, доступных только для чтения, эта возможность редко используется на практике.

Обратите внимание на отсутствие пробелов в операторе присваивания между именем переменной, знаком «равно» и значением. А из чего может состоять значение? Из всего что угодно, что можно развернуть в строку.

a=z # Присвоит переменной a строку "z".

b="a string" # Внутренние пробелы должны находиться в кавычках.

c="a string and $b" # При присваивании допускается выполнять подстановку,

# например, значений других переменных.

d=$(ls -l foo.txt) # Результат выполнения команды.

e=$((5 * 7)) # Подстановка результата арифметического выражения.

f="\t\ta string\n" # Экранированные последовательности, такие как

# символы табуляции и перевода строки.

В одной строке можно выполнить присваивание сразу нескольким переменным:

a=5 b="a string"

При использовании подстановки имена переменных можно заключать в необязательные фигурные скобки {}. Это пригодится в том случае, когда имя переменной становится неоднозначным в окружающем контексте. В следующем примере выполняется попытка переименовать файл myfile в myfile1 с использованием переменной:

[me@linuxbox ~]$ filename="myfile"

[me@linuxbox ~]$ touch $filename

[me@linuxbox ~]$ mv $filename $filename1

mv: после 'myfile' пропущен операнд, задающий целевой файл

По команде "mv --help" можно получить дополнительную информацию.

Эта попытка не увенчалась успехом, потому что командная оболочка интерпретировала второй аргумент команды mv как имя новой (и пустой) переменной. Ниже показано, как решается подобная проблема:

[me@linuxbox ~]$ mv $filename ${filename}1

Добавив фигурные скобки, мы гарантировали, что командная оболочка не будет интерпретировать последний символ 1 как часть имени переменной.

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

#!/bin/bash

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

TITLE="System Information Report For $HOSTNAME"

CURRENT_TIME=$(date +"%x %r %Z")

TIME_STAMP="Generated $CURRENT_TIME, by $USER"

echo "<HTML>

<HEAD>

<TITLE>$TITLE</TITLE>

</HEAD>

<BODY>

<H1>$TITLE</H1>

$TIME_STAMP

</BODY>

</HTML>"

Встроенные документы

Мы рассмотрели два разных метода вывода текста, и оба используют команду echo. Однако существует еще один, третий метод, который называется встроенным документом (here document), или встроенным сценарием (here script). Встроенный документ — это дополнительная форма перенаправления ввода/вывода, которая передает текст, встроенный в сценарий, на стандартный ввод команды. Действует это перенаправление так:

команда << индикатор

  • Читать дальше
  • 1
  • ...
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: