Добавить в цитаты Настройки чтения

Страница 4 из 6

$

$ {переменная@Q} Заключить в кавычки значение указанной переменной.

$ c=file1.txt

$ echo ${[email protected]}

'file1.txt'

${!переменная }

Использовать значение указанной переменной в качестве имени другой переменной ,значение которой должно быть использовано.

4.3 Косвенные переменные.

Косвенные переменные-это переменные именующие другие переменные.

Косвенные переменные создаются по команде

declare -n

Пример 1

$ greeting=privet

$ echo $greeting

privet

$ declare -n message=greeting

$ echo $message

privet

Пример 2 Присвоить через косвенную переменную

значение основной переменной.

$ message=otvet

$ echo $greeting

otvet

Пример 3 Применение псевдонима

$ text=ok

$ echo $(!text)

echo $(text=ok)

4.4 Переменные, встроенные в оболочку.

Основные переменные.

$# количество аргументов в командной строке.

$-Действующие в настоящее время

параметры,представленные в командной строке.

$? Выходное значение последней,выполнявшейся

команды.

$$ Номер процесса ,присвоенный оболочке.

$! Номер процесса,присвоенной

команде,выполнявшейся в фоновом режиме.

$0 Первое слово, имя команды.

$n Oтдельные аргументы командной строки,если больше 9 форма ${n}

$*,[email protected] Все аргументы командной строки ($1,$2..)

Пример 1

$ cat >param.sh

#!/bin/sh

echo "$#"

echo "$0"

echo "$?"

echo "$$"

echo "[email protected]"

echo "$*"

exit 0

Запускаем скрипт с параметрами a b c d

$ sh param.sh a b c d

4

param.sh

0

2698

a b c d

a b c d

4.5 Дополнительные переменные.

$_ Временная переменная ,хранит последний аргумент предыдущей команды. Пример

$ ls -l f2.txt

–rw-rw-rw- 1 max1 max1 6 апр 24 12:57 f2.txt

$ echo $_

f2.txt

BASH Полный путь для вызова оболочки

$ echo $BASH

/usr/bin/bash

BASHOPTS Доступный для чтения список

активизированных в настоящий момент параметров оболочки.

$ echo $BASHOPTS Checkwinsize:cmdhist:complete_fullquote:

expand_aliases:extglob:extquote:force_fignore:

globasciiranges:histappend:interactive_comments:

progcomp:promptvars:sourcepath

BASHPID Индефикатор текущего процесса. Пример

$ echo $BASHPID

3321

Для сравнения используем встроенную переменную

$ $$

3321: команда не найдена

BASH_COMMAND Команда,которая выполняется в

текущий момент или готовится к исполнению. Это

команда выполняемая при появлении прерывания

MACHTYPE Тип машины

$ echo $MACHTYPE

x86_64-pc-linux-gnu

UID Переменная реальный числовой индефикатор текущего пользователя

mа[email protected]:~$ echo $UID

1000

[email protected]:~# echo $UID

0

EUID Переменная числовой действующий индефикатор текущего пользователя.

$ echo $EUID

1000

GROUPS Переменная список числовых индефикаторов групп, членом которых является текущий пользователь.

$ echo $GROUPS

1000

HISTCMD Номер текущей команды в предистории

$ echo $HISTCMD

2021

HOSTNAME Номер текущего хоста (сетевого узла).





[email protected]:~$ echo $HOSTNAME

hp

SECONDS[=n] Количество секунд прошедших с момента запуска оболочки или же количество секунд,прошедших с момента присваивания значения этой пременной, плюс n ,если n задано.

$ echo $SECONDS

9606

HOSTTYPE Символьная строка ,описывающая главную

cистему

$ echo $HOSTTYPE

x86_64

Пример вывода некоторых наиболее важных

переменных

$ echo $USER;echo $HOME;echo $LOGNAME

max

/home/max

max

$echo $DESKTOP_SESSION;

$echo$DISPLAY;echo $TERM

mate

:0

xterm

$ echo $SHELL;echo $PWD

/bin/bash

/home/max

$ echo $PATH

/home/max/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

$ echo $SHELL;echo $PWD

/bin/bash

/home/max

$ echo $SHELL;echo $PWD

/bin/bash

/home/max

$ echo $RANDOM Номер случайного числа

18264

$ echo $SECONDS Количество секунд с момента запуска оболочки

430

$ echo $HISTCMD Номер текущей команды

2003

$ echo $HOSTNAME Текущий хост

hp

4.6 Другие переменные оболочки.

Перечисленные переменные не устанавливаются

автоматически. Их можно определить в соответствии

со своими потребностями в файлах .bash_profile ,

.profile.

BASH_COMPAT Если в ней задана пустая символьная строка ,то устанавливается уровень совместимости, присущей текущей оболочки.

BASH_ENV Если эта переменная устанавливается при запуске оболочки,она именует файл,обрабатываемый для команд инициилизации.

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

BASH_XTRACEFD=n Дескриптор файла, в который оболочка BASH записывает результат трассировки,выводимый из команды set -x.

CDPATH=каталоги Каталоги искомые по команде cd.

$ echo $CDPATH + echo

CHILD_MAX=n Максимально устанавливаемое

количество процессов, для которых оболочка

запоминает коды завершения.

$ CHILD_MAX=4096

+ CHILD_MAX=4096

$ echo $CHILD_MAX

+ echo 4096

4096

COLUMNS=n Ширина столбца на экране, применяется в цикле select.

$ COLUMNS=60

+ COLUMNS=60

$ echo $COLUMNS

+ echo 60

60

EMACS Ели значение переменной начинается с буквы t Bash посчитает ,что она выполняется в буфере редактора EMACS.

ENV=файл Наименование сценария, выполняемого при запуске в режиме работы по стандарту POSIX/

EXECIGNORE=список шаблонов. Разделяемый двоеточиями список глобальных шаблонов,описывающих ряд имен файлов игнорируемых при поиске исполняемых файлов.

FCEDIT=файл Редактор ,применяемый в команде fc.

FIGNORE=список шаблонов. Разделяемый двоеточием

список суффиксов ,описывающих ряд имен файлов,

игнорируемых при автозавершении имен файлов

средствами библиотеки readline.

GLOBIGNORE=список_шаблонов. Разделяемый

двоеточием список шаблонов ,описывающих ряд имен

файлов,игнорируемых при сопоставлении с шаблоном.

HISTCONTROL=список. Разделяемый двоеточием список

значений ,определяющих порядок сохранения команд в файле предистории.

HISTFILE=файл. Файл в котором храниться предистория выполнения команд. По умолчанию

~/.bash_history

HISTFILESIZE=n Количество строк,сохраняемых в файле предистории.По умолчанию 500.

HISTIGNORE=список Разделяемый двоеточием список

шаблонов ,с которыми должна полностью совпадать

командная строка. Совпадающие строки не

сохраняются в файле предистории.

HISTSIZE=n Количество команд,сохраняемых в файле

предистории.По умолчанию 500.

HISTTIMEFORMAT=строка Форматирующая строка,

предназначенная для вывода отметок времени

вместе с командами из предистории по команде

history.

HCME=каталог Начальный каталог,устанавливаемый

по команде login из файла /etc/passwd.

HOSTFILE=файл Оболочка должна использовать этот файлдля поиска имен хостов в целях их завершения.

IFS=’символы‘ Разделители полей ввода.

IGNOREEOF=n Числовое значение,обозначающее количество последовательных знаков окончания файла,которое требуется ввести прежде чем произойдет выход из оболочки. Применяется только в интерактивных оболочках. По умолчанию 10.

INPUTRC=файл Применяется для библиотеки readline.

Заменяет файл ~/.inputrc

LANG=языковый_стандарт Выбирает по умолчанию языковый стандарт.

LINES=n Высота экрана. Применяется в цикле select. MAIL=файл Файл выбираемый по умолчанию для