Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Здесь есть возможность читать онлайн «Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: СПб., Год выпуска: 2017, ISBN: 2017, Издательство: Питер, Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.
Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

····do

картинка 505······deck[$card]=$card

······card=$(($card + 1))

····done

··}

··function shuffleDeck

··{

····# Это не настоящее перемешивание. Это случайное извлечение значений карт

····#·· из массива 'deck' и создание массива newdeck[], представляющего

····#·· "перемешанную" колоду.

····count=1

····while [$count!= 53]

····do

······pickCard

картинка 506······newdeck[$count]=$picked

······count=$(($count + 1))

····done

··}

картинка 507··function pickCard

··{

····# Это самая интересная функция: выбор случайной карты из колоды.

····#·· Поиск карты осуществляется в массиве deck[].

····local errcount randomcard

····threshold=10 # Максимальное число попыток, прежде чем признать неудачу

····errcount=0

····# Выбирает из колоды случайную карту, которая еще не была выбрана,

····#·· выполняя не более $threshold попыток. В случае неудачи (чтобы

····#·· избежать зацикливания, когда раз за разом выполняется попытка

····#·· извлечь уже извлеченную карту) выполняется переход к запасному

····#·· варианту.

картинка 508····while [$errcount −lt $threshold]

····do

······randomcard=$((($RANDOM % 52) + 1))

······errcount=$(($errcount + 1))

······if [${deck[$randomcard]} −ne 0]; then

········picked=${deck[$randomcard]}

········deck[$picked]=0 # Выбрали — удалить ее.

········return $picked

······fi

····done

····# Если сценарий оказался здесь, значит, он не смог выбрать случайную карту,

····#·· поэтому дальше просто продолжается последовательный обход массива

····#·· до обнаружения первой доступной карты.

····randomcard=1

картинка 509····while [${newdeck[$randomcard]} −eq 0]

····do

······randomcard=$(($randomcard + 1))

····done

····picked=$randomcard

····deck[$picked]=0 # Выбрали — удалить ее.

····return $picked

··}

··function showCard

··{

····# Функция использует операции деления и взятия остатка для определения

····#·· масти и достоинства, хотя в этой игре значение имеет только достоинство.

····#·· Однако для представления важно иметь полную информацию.

····card=$1

····if [$card −lt 1 −o $card −gt 52]; then

······echo "Bad card value: $card"

······exit 1

····fi

····# деление и взятие остатка — школьные годы не были потрачены впустую!

картинка 510····suit="$(((($card — 1) / 13) + 1))"

····rank="$(($card % 13))"

····case $suit in

······1) suit="Hearts"··;;

······2) suit="Clubs"····;;

······3) suit="Spades"··;;

······4) suit="Diamonds";;

······*) echo "Bad suit value: $suit"

··········exit 1

····esac

····case $rank in

······0) rank="King"··;;

······1) rank="Ace"··;;

······11) rank="Jack"··;;

······12) rank="Queen";;

····esac

····cardname="$rank of $suit"

··}

картинка 511··function dealCards

··{

····# В игре Раз-два раздаются две карты…

····card1=${newdeck[1]} # Колода перетасована, поэтому

····card2=${newdeck[2]} #·· выдаем две верхних карты

····card3=${newdeck[3]} #·· и снимаем третью, но пока не показываем.

····rank1=$((${newdeck[1]} % 13)) # И сразу определяем достоинства, чтобы

····rank2=$((${newdeck[2]} % 13)) #·· упростить последующие вычисления.

····rank3=$((${newdeck[3]} % 13))

····# Исправить значение для короля: по умолчанию оно равно 0,

····#·· сделать равным 13.

····if [$rank1 −eq 0]; then

······rank1=13;

····fi

····if [$rank2 −eq 0]; then

······rank2=13;

····fi

····if [$rank3 −eq 0]; then

······rank3=13;

····fi

····# Теперь поменяем сданные карты местами так, чтобы card1 всегда

····#·· была меньше card2.

картинка 512····if [$rank1 −gt $rank2]; then

······temp=$card1; card1=$card2; card2=$temp

······temp=$rank1; rank1=$rank2; rank2=$temp

····fi

····showCard $card1; cardname1=$cardname

····showCard $card2; cardname2=$cardname

····showCard $card3; cardname3=$cardname # Shhh, it's a secret for now.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

Представляем Вашему вниманию похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

Обсуждение, отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x