Тут можно читать онлайн книгу Мэтью Нейл - Основы программирования в Linux - бесплатно полную версию (целиком). Жанр книги: Программирование. Вы можете прочесть полную версию (весь текст) онлайн без регистрации и смс на сайте Lib-King.Ru (Либ-Кинг) или прочитать краткое содержание, аннотацию (предисловие), описание и ознакомиться с отзывами (комментариями) о произведении.
Основы программирования в Linux - описание и краткое содержание, автор Мэтью Нейл, читать бесплатно онлайн на сайте электронной библиотеки Lib-King.Ru.
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стандартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Основы программирования в Linux - читать книгу онлайн бесплатно, автор Мэтью Нейл
Данный сценарий исправляет наиболее очевидный дефект, а более тонкая проблема остается незамеченной. Запустите новый вариант сценария, но вместо ответа на вопрос просто нажмите клавишу <Enter> (или на некоторых клавиатурах клавишу <Return>). Вы получите сообщение об ошибке:
[: =: unary operator expectedЧто же не так? Проблема в первой ветви оператора
iftimeofdayif<i>if [ = "yes" ]</i>и не представляла собой верное условие. Во избежание этого следует заключить имя переменной в кавычки:
<i>if [ "$timeofday" = "yes" ]</i>Теперь проверка с пустой переменной будет корректной:
<i>if [ "" = "yes" ]</i>Новый сценарий будет таким:
#!/bin/shecho "Is it morning? Please answer yes or no "read timeofday<i>if [ "$timeofday" = "yes" ]</i>then echo "Good morning"elif [ "$timeofday" = "no" ]; then echo "Good afternoon"else<i> echo "Sorry, $timeofday not recognized. Enter yes or no "</i> exit 1fiexit 0Этот вариант безопасен, даже если пользователь в ответ на вопрос просто нажмет клавишу <Enter>.
Если вы хотите, чтобы команда
echoprintf echoecho -еecho -necho -n "Is it morning? Please answer yes or no: "Помните о том, что нужно оставлять дополнительный пробел перед закрывающими кавычками, таким образом формируется зазор перед вводимым пользователем ответом, который в этом случае выглядит четче.
Применяйте конструкцию
forСинтаксис этого оператора прост:
<b>for</b> <i>переменная </i><b>in</b> <i>значения</i><b>do</b><i> операторы</i><b>done</b>Выполните упражнения 2.4 и 2.5.
forВ командной оболочке значения обычно представлены в виде строк, поэтому можно написать следующий сценарий:
#!/bin/shfor foo in bar fud 43do echo $foodoneexit 0В результате будет получен следующий вывод:
barfud43Что произойдет, если вы измените первую строку с
for foo in bar fud 43for foo in "bar fud 43"Как это работает
В данном примере создается переменная
fooforfudforКак упоминалось ранее, цикл
forВы уже видели этот прием в первом примере first. В сценарии применялись средства подстановки командной оболочки — символ
*$fileforДавайте бегло просмотрим еще один пример подстановки с помощью метасимвола. Допустим, что вы хотите вывести на экран все имена файлов сценариев в текущем каталоге, начинающиеся с буквы "f", и вы знаете, что имена всех ваших сценариев заканчиваются символами .sh. Это можно сделать следующим образом:
#!/bin/shfor file in $(ls f*.sh); do lpr $filedoneexit 0Как это работает
В этом примере показано применение синтаксической конструкции
$(<i>команда</i>)for$()