Чтение онлайн

на главную - закладки

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

timedout_read $INTERVAL your_name

# Такой прием может не работать на некоторых типах терминалов.

# Максимальное время ожидания зависит от терминала.

# (чаще всего это 25.5 секунд).

echo

if [ !
– z "$your_name" ] # Если имя было введено...

then

echo "Вас зовут $your_name."

else

echo "Вы

не успели ответить."

fi

echo

# Алгоритм работы этого сценария отличается от "timed-input.sh".

# Каждое нажатие на клавишу вызывает сброс счетчика в начальное состояние.

exit 0

Возможно самый простой способ -- использовать опцию – t команды read.

Пример 9-4. Ограничение времени ожидания команды read

#!/bin/bash

# t-out.sh

TIMELIMIT=4 # 4 секунды

read -t $TIMELIMIT variable <&1

echo

if [ -z "$variable" ]

then

echo "Время ожидания истекло."

else

echo "variable = $variable"

fi

exit 0

$UID

user id number

UID (идентификатор) текущего пользователя, в соответствии с /etc/passwd

Это реальный UID текущего пользователя, даже если он временно приобрел права другого пользователя с помощью su. Переменная $UID доступна только для чтения.

Пример 9-5. Я -- root?

#!/bin/bash

# am-i-root.sh: Root я, или не root?

ROOT_UID=0 # $UID root-а всегда равен 0.

if [ "$UID" -eq "$ROOT_UID" ] # Настоящий "root"?

then

echo "- root!"

else

echo "простой пользователь (но мамочка вас тоже любит)!"

fi

exit 0

# ============================================================= #

# Код, приведенный ниже, никогда не отработает,

#+ поскольку работа сценария уже завершилась выше

# Еще один способ отличить root-а от не root-а:

ROOTUSER_NAME=root

username=`id -nu` #

Или... username=`whoami`

if [ "$username" = "$ROOTUSER_NAME" ]

then

echo "Рутти-тутти.
– root!"

else

echo "Вы - лишь обычный юзер."

fi

См. также Пример 2-2.

Переменные $ENV, $LOGNAME, $MAIL, $TERM, $USER и $USERNAME, не являются встроенными переменными Bash. Тем не менее, они часто инициализируются как переменные окружения в одном из стартовых файлов Bash. Переменная $SHELL, командная оболочка пользователя, может задаваться в /etc/passwd или в сценарии "init" и она тоже не является встроенной переменной Bash.

tcsh% echo $LOGNAME

bozo

tcsh% echo $SHELL

/bin/tcsh

tcsh% echo $TERM

rxvt

bash$ echo $LOGNAME

bozo

bash$ echo $SHELL

/bin/tcsh

bash$ echo $TERM

rxvt

Позиционные параметры (аргументы)

$0, $1, $2 и т.д.

аргументы передаются... из командной строки в сценарий, функциям или команде set (см. Пример 4-5 и Пример 11-13)

$#

количество аргументов командной строки [ 20 ] , или позиционных параметров (см. Пример 33-2)

20

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

$*

Все аргументы в виде одной строки (слова)

$@

То же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово), т.е. параметры не подвергаются какой либо интерпретации.

Пример 9-6. arglist: Вывод списка аргументов с помощью переменных $* и $@

#!/bin/bash

# Вызовите сценарий с несколькими аргументами, например: "один два три".

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

На границе тучи ходят хмуро...

Кулаков Алексей Иванович
1. Александр Агренев
Фантастика:
альтернативная история
9.28
рейтинг книги
На границе тучи ходят хмуро...

Кодекс Охотника. Книга III

Винокуров Юрий
3. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Кодекс Охотника. Книга III

Последний попаданец 11. Финал. Часть 1

Зубов Константин
11. Последний попаданец
Фантастика:
фэнтези
юмористическое фэнтези
рпг
5.00
рейтинг книги
Последний попаданец 11. Финал. Часть 1

Книга пяти колец

Зайцев Константин
1. Книга пяти колец
Фантастика:
фэнтези
6.00
рейтинг книги
Книга пяти колец

Поступь Империи

Ланцов Михаил Алексеевич
7. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Поступь Империи

Купидон с топором

Юнина Наталья
Любовные романы:
современные любовные романы
7.67
рейтинг книги
Купидон с топором

Наследник в Зеркальной Маске

Тарс Элиан
8. Десять Принцев Российской Империи
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник в Зеркальной Маске

Совок 5

Агарев Вадим
5. Совок
Фантастика:
детективная фантастика
попаданцы
альтернативная история
6.20
рейтинг книги
Совок 5

Аномальный наследник. Том 1 и Том 2

Тарс Элиан
1. Аномальный наследник
Фантастика:
боевая фантастика
альтернативная история
8.50
рейтинг книги
Аномальный наследник. Том 1 и Том 2

Теневой путь. Шаг в тень

Мазуров Дмитрий
1. Теневой путь
Фантастика:
фэнтези
6.71
рейтинг книги
Теневой путь. Шаг в тень

Попаданка в академии драконов 2

Свадьбина Любовь
2. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
6.95
рейтинг книги
Попаданка в академии драконов 2

Гром над Империей. Часть 2

Машуков Тимур
6. Гром над миром
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Гром над Империей. Часть 2

Ритуал для призыва профессора

Лунёва Мария
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Ритуал для призыва профессора

Измена. Осколки чувств

Верди Алиса
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Осколки чувств