$
$ {переменная@Q} Заключить в кавычки значение указанной переменной.
$ c=file1.txt
$ echo ${c@Q}
'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}
$*,$@ Все аргументы командной строки ($1,$2..)
Пример 1
$ cat >param.sh
#!/bin/sh
echo "$#"
echo "$0"
echo "$?"
echo "$$"
echo "$@"
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а1@hp:~$ echo $UID
1000
root@hp:~# echo $UID
0
EUID Переменная числовой действующий индефикатор текущего пользователя.
$ echo $EUID
1000
GROUPS Переменная список числовых индефикаторов групп, членом которых является текущий пользователь.
$ echo $GROUPS
1000
HISTCMD Номер текущей команды в предистории
$ echo $HISTCMD
2021
HOSTNAME Номер текущего хоста (сетевого узла).
max1@hp:~$ 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=файл Файл выбираемый по умолчанию для