Читать «Краткое введение в программирование на Bash» онлайн - страница 10

Гарольд Родригес

Большинство из вас должно быть знакомо с первыми четырьмя операциями. Если вы не знаете, что такое деление по модулю, то это просто число равное остатку от деления одного целого числа на другое. Ниже приведен пример выполнения арифметических операций в bash:

#!/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 и не ввел при этом ничего, наша программа напишет об этом и завершит свою работу. В противном случае она напечатает приветствие. Получение пользовательского ввода полезно для интерактивных программ, которые требуют от пользователя ввести какие-то данные.

Функции

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

#!/bin/bash

# функция hello() печатает сообщение

hello(){

echo "Вы находитесь в функции hello()"