UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
for i in 1 2 3 4 5В этой программе нужно контролировать процесс разбиения интерпретатором строк на аргументы, чтобы только символ перевода строки разделял соседние "слова".
Внутренняя переменная интерпретатора
IFSforIFS$ echo 'echo $#' >nargs$ cx nargs$ whoyou tty0 Oct 1 05:59pjw tty2 Oct 1 11:26$ nargs 'who'10 $ IFS='' $ nargs `who`2 $После установки
IFSzap$ cat zap# zap pat: kill all processes matching pat# final versionPATH=/bin:/usr/bin IFS='' # just a newlinecase $1 in"") echo 'Usage: zap [-2] pattern' 1>&2; exit 1 ;;-*) SIG=$1; shiftesacecho ' PID TTY TIME CMD'kill $SIG `pick `ps -ag | egrep "$*"` | awk '{print $1}`"$ ps -agPID TTY TIME CMD...2216 0 0:00 sleep 1000...$ zap sleepPID TTY TIME CMD2216 0 0:00 sleep 1000? y2314 0 0:02 egrep sleep? N$Мы здесь кое-что добавили: необязательный аргумент, обозначающий сигнал (обратите внимание на то, что
SIGegrepgrep'sleep | date'echopsВас может заинтересовать, почему эта команда называется
zapkillcalkillzapkillzappsИзмените команду
zappsps5.7 Команда
pickВы уже достаточно подготовлены для того, чтобы написать команду
pickshellread$ read greetinghello, world$ echo $greetinghello, world$Самым типичным примером использования команды
read.profileTERMКоманда
readfor><$ read greeting </etc/passwdgoodbye illegal io $ echo $greeting goodbye $Это можно считать ошибкой интерпретатора, но такова жизнь. К счастью, можно предусмотреть переключение в цикле, охватывающем команду
readpick# pick: select argumentsPATH=/bin:/usr/binfor i # for each argumentdo echo -n "$i? " >/dev/tty
