Краткое введение в программирование на Bash | страница 12



>#!/bin/bash

>x=5 # устанавливаем x равным 5

>y=3 # устанавливаем y равным 3

># сохраняем сумму x и y в переменную add

>add=$(($x + $y))

># сохраняем разность x и y в переменную sub

>sub=$(($x – $y))

># умножаем x на y и сохраняем результат в переменную mul

>mul=$(($x * $y))

># в переменную div сохраняем результат деления x на y

>div=$(($x / $y))

># получаем остаток от деления x на y и сохраняем его в переменную mod

>mod=$(($x % $y))

># печатаем ответы

>echo "Сумма равна: $add"

>echo "Разность равна $sub"

>echo "Произведение равно $mul"

>echo "Результат деления $div"

>echo "Остаток от деления $mod"

Код, приведенный выше, можно было бы написать с использованием expr. Например, вместо add=$(($x + $y)) мы могли бы использовать add=$(expr $x + $y)илиadd=`expr $x + $y`.

Чтение ввода пользователя

А теперь — самое интересное. Мы напишем свой скрипт так, что он будет взаимодействовать с пользователем, а пользователь с ним. Команда для получения данных от пользователя —read. Это встроенная в bash команда, сохраняющая ввод пользователя в указанной переменной:

>#!/bin/bash

># спросить у пользователя его имя и поздороваться с ним

>echo -n "Введите свое имя: "

>read user_name

>echo "Привет $user_name!"

Переменная здесь — это user_name. Конечно, мы могли бы назвать ее как угодно. Оператор read прервет выполнение скрипта и будет ждать, пока пользователь введет что-нибудь и нажмет клавишу ENTER. Если клавиша ENTER была нажата без ввода чего-либо, read запустит следующую строку кода. Попробуйте это сделать. Ниже приведен тот же пример, только на этот раз мы проверяем, вводит ли пользователь что-либо:

>#!/bin/bash

># спрашиваем имя пользователя и выводим приветствие

>echo -n "Введите имя: "

>read user_name

># проверка ввода пользователя

>if [ -z "$user_name" ]; then

>echo "Вы не сказали мне свое имя!"

>exit

>fi

>echo "Привет $user_name!"

В приведенном примере, если пользователь нажал ENTER и не ввел при этом ничего, наша программа напишет об этом и завершит свою работу. В противном случае она напечатает приветствие. Получение пользовательского ввода полезно для интерактивных программ, которые требуют от пользователя ввести какие-то данные.

Функции

Использование функций делает сопровождение своих скриптов проще. Проще говоря, это хороший способ разделить программу на более мелкие куски. Функция выполняет определенное действие и может возвращать то значение, какое вы пожелаете. Прежде чем продолжать, я приведу пример скрипта, написанного с использованием функции: