Читать книгу 📗 "UNIX — универсальная среда программирования - Керниган Брайан Уилсон"
3.6 Переменные языка
shellПодобно большинству языков программирования,
shell$1shellPATHНОМЕPATH$PATH$1$1Если забыть о позиционных параметрах, переменные языка
shell$ PATH=:/bin:/usr/binозначает присваивание, изменяющее список каталогов в процессе поиска. До и после знака равенства не должно быть пробелов. Присваиваемое значение должно выражаться одним словом, и его следует взять в кавычки, если оно содержит метасимволы, которые не нужно обрабатывать. Значение переменной выбирается, если предварить имя знаком доллара:
$ PATH=$PATH:/usr/games$ echo $PATH:/usr/you/bin:/bin:/usr/bin:/usr/games$ PATH=:/usr/you/bin:/bin:/usr/bin $He все переменные имеют специальное значение для интерпретатора. Можно создавать новые переменные, присваивая им значения. По традиции переменные, имеющие специальное значение, обозначаются прописными буквами, а обычные переменные — строчными. Типичным примером использования переменных является хранение в них длинных строк, таких, как имена файлов:
$ pwd/usr/you/bin$ dir=`pwd`        $ cd /usr/mary/bin $ ln $dir/cx .     $ ...              $ cd $dir          $ pwd/usr/you/bin$Встроенная в интерпретатор команда
setecho$ setHOME=/usr/youIFS=PATH=:/usr/you/bin:/bin/:/usr/binPS1=$PS2=>dir=/usr/you/bin$ echo $dir/usr/you/bin$Значение переменной связано с той копией интерпретатора, который создал ее, и автоматически не передается процессам — потомкам интерпретатора.
$ x=Hello $ sh      $ echo $x x не определено в порожденном интерпретаторе
$ ctl-d   $ echo $xHello     $Это означает, что в командном файле нельзя изменить значение переменной, поскольку выполнением командного файла управляет порожденный интерпретатор:
$ echo 'x="Good bye" > echo $x' >setx     $ cat setxx="Good Bye"echo $x$ echo $xHello                $ sh setxGood Bye             $ echo $xHello                $Однако бывают ситуации, когда было бы полезно изменять переменные интерпретатора в командном файле. Очевидным примером является файл, добавляющий новый каталог к вашей переменной
PATH'.'.profile$ cat /usr/you/bin/gamesPATH=$PATH:/usr/games $ echo $PATH:/usr/you/bin:/bin:/usr/bin$ . games$ echo $PATH:/usr/you/bin:/bin:/usr/bin:/usr/games$Поиск файла для команды
'.'PATHbinКогда используется команда
'.'$1$2Конец ознакомительного фрагмента Купить полную версию книги