Как написать в Linux в Bash в shellscript часть, которая может делать что-то вроде этого

Вопрос или проблема

Как написать в Linux на Bash в shellscript часть, которая может делать что-то вроде этого

введите число

должно быть в диапазоне от 4 до 999

если нет, спросите снова, чтобы ввести

введённое число * 5 * случайное число [1-9] (один знак)

отобразите результат и спросите, хорошо ли

введите – для нового запуска (введённое число * 5 * случайное число [1-9] (один знак))

y – для да, хорошо, продолжаем в скрипте

n – вернуться к моменту “введите число” снова

e – для выхода из скрипта


я знаю, что с командой “read” есть приглашение ввести что-то,
и я знаю, что с помощью cat /dev/urandom | tr -cd '0-9' | head -c 1 это стать одной случайной цифрой

Ответ или решение

Для создания Bash-скрипта, который будет реализовывать описанные вами функции, мы последовательно разработаем структуру скрипта, обеспечим проверку ввода, генерацию случайного числа и взаимодействие с пользователем.

Пример Bash-скрипта

Ниже приведён полный пример скрипта, который соответствует всем требованиям в вашем вопросе:

#!/bin/bash

while true; do
    # Запрос номера у пользователя
    read -p "Введите число в диапазоне от 4 до 999: " entered_number

    # Проверка, является ли введенное число числом и находится ли оно в заданном диапазоне
    if [[ $entered_number =~ ^[0-9]+$ ]] && [ "$entered_number" -ge 4 ] && [ "$entered_number" -le 999 ]; then
        # Генерация случайного однозначного числа от 1 до 9
        random_number=$((RANDOM % 9 + 1))

        # Вычисление результата
        result=$((entered_number * 5 * random_number))

        # Отображение результата
        echo "Результат: $result. Устраивает? [y - да, n - нет, - для нового запуска, e - выход]"

        while true; do
            read -p "Введите ваш выбор: " choice

            case $choice in
                y|Y)
                    echo "Вы выбрали продолжить. Скрипт завершен."
                    exit 0
                    ;;
                n|N)
                    echo "Вы выбрали продолжить с новым числом."
                    break  # Возврат к началу цикла для нового ввода
                    ;;
                -)
                    echo "Запуск нового расчета."
                    break  # Возврат к началу цикла для нового ввода
                    ;;
                e|E)
                    echo "Выход из скрипта."
                    exit 0
                    ;;
                *)
                    echo "Неверный выбор! Пожалуйста, выберите 'y', 'n', '-' или 'e'."
                    ;;
            esac
        done
    else
        echo "Некорректный ввод. Пожалуйста, введите число в диапазоне от 4 до 999."
    fi
done

Объяснение работы скрипта

  1. Запрос числа: С помощью команды read мы запрашиваем у пользователя ввод числа в заданном диапазоне.

  2. Проверка ввода: Если введенное значение не соответствует требованиям (не число или не попадает в диапазон от 4 до 999), скрипт уведомляет пользователя и запрашивает ввод повторно.

  3. Генерация случайного числа: Используя механизм $((RANDOM % 9 + 1)), создается случайное однозначное число от 1 до 9.

  4. Вывод результата: Скрипт вычисляет результат по формуле и выводит его пользователю, предлагая выбрать, устраивает ли его результат.

  5. Обработка выбора пользователя: В данном блоке происходит проверка ввода. В зависимости от выбора пользователя:

    • Если введено ‘y’ или ‘Y’, скрипт завершает работу.
    • Если введено ‘n’ или ‘N’, происходит возврат к первоначальному запросу.
    • Если введен символ ‘-‘, снова предлагается ввести число для нового расчета.
    • Если введено ‘e’ или ‘E’, скрипт завершается.
    • При любом другом вводе пользователю сообщается о неверном выборе.

Этот подход гарантирует, что ваш скрипт будет чистым, понятным и легким в использовании. Каждая функция реализована логично, что позволяет пользователю легко работать с программой, а также предоставляет возможность расширения и модификации в будущем.

Оцените материал
Добавить комментарий

Капча загружается...