UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
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
