Краткое введение в программирование на 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 и не ввел при этом ничего, наша программа напишет об этом и завершит свою работу. В противном случае она напечатает приветствие. Получение пользовательского ввода полезно для интерактивных программ, которые требуют от пользователя ввести какие-то данные.
Функции
Использование функций делает сопровождение своих скриптов проще. Проще говоря, это хороший способ разделить программу на более мелкие куски. Функция выполняет определенное действие и может возвращать то значение, какое вы пожелаете. Прежде чем продолжать, я приведу пример скрипта, написанного с использованием функции: