Программирование на bash - часть 2

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

Условное условие If

Функция If заключается в применении фильтра и выполнении операции или задачи для каждого типа примененного фильтра. Его структура следующая:

Если [условие]; затем команды elif [условие]; затем команды else; команды fi

Пример показан рядом с циклом For в соответствующем разделе.

Циклы

1. Пока: он будет выполнять все команды, указанные между do и done, пока выполняется условие. Если мы хотим передать ему операторы сравнения, выражение должно быть в скобках.

в то время как CONDITION / COMMAND выполняет команды

Пример: таблица умножения числа

#! / bin / bash X = 1 echo "Введите число и нажмите ENTER" read M # Цикл определяет, что X меньше или равно 10, а [$ X –le 10] do # В R мы сохраняем умножение X на MR = $ [X * M] # Это умножение выводится на экран echo "$ M * $ X = $ R" # С let мы увеличиваем значение X на 1 единицу let X = $ X + 1 done

2. For: хранит список элементов в переменной, которые будут использоваться для выполнения определенных операций с каждым циклом.

для ПЕРЕМЕННОЙ в ЭЛЕМЕНТАХ выполняйте команды

Пример: программа, которая копирует файл из одной папки в другую, заменяя старый файл.

# / bin / bash # Мы устанавливаем исходный и целевой каталоги ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Мы позиционируем себя в исходном cd $ ORIGIN # Из всех файлов нам нужен только тот, который # вызовите FILE для FILE в * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f фильтрует обычные файлы, # поскольку каталоги для нас бесполезны. –Nt отфильтровывает # файлов «новее», чем # найденные в папке назначения, если [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; затем echo "Copying $ FILE ..." # копируем файл с помощью cp cp $ FILE $ ARCH-DESTINATION fi done # Мы cd для выхода из исходной папки cd

Другой пример: сценарий, в котором пользователь должен угадать случайное число, сгенерированное компьютером.

# / bin / bash # Генерируется случайное число от 1 до 10, оно # сохраняется в RANDOM RANDOM = $ [$ RANDOM% 10 + 1], а [1] do echo –n "Введите число:" прочтите NUM # Сравните, если выбранное пользователем число # равно СЛУЧАЙНОМУ; не забудьте использовать $ для оценки # значений переменных, а не их имен if [«$ NUM –eq« $ RANDOM »]; затем эхо "Вы поняли!" #break позволяет завершить цикл при остановке # Если число меньше RANDOM elif [«$ NUM –gt« $ RANDOM »]; then echo "Это меньше" "Если нет, то больше, чем RANDOM else echo" IS больше "fi done

3. До: очень похожа по структуре на While, за исключением того, что код всегда выполняется, пока оценка условия отрицательна, то есть программа продолжает выполнение «до тех пор, пока не произойдет условие».

пока УСЛОВИЕ / КОМАНДА не выполнят команды

Пример: выведите числа 10-20 в порядке убывания

#! / bin / bash CONT = 20 # Пока счетчик меньше 10 (-lt, «меньше # чем»), код выполняется до [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT вычитается на единицу let CONT- = 1 done

4. Выбор: этот последний цикл - особый случай, поскольку он обычно используется для быстрого создания меню. Он работает аналогично циклу For.

выберите ПЕРЕМЕННАЯ в СПИСКЕ выполненных команд

Пример: дать пользователю возможность продолжить или завершить сценарий.

#! / bin / bash #item - это переменная, которая реагирует на то, что # выбирает пользователь, Continue и Finish - это доступные ему # опции, хотя могут быть добавлены другие опции # more select item in Continue Finish do # Если пользователь выбирает завершаем программу, затем с перерывом выходим из цикла. если [$ item = "Готово"]; тогда перерыв готов
Спасибо, Хуан Карлос Ортис!

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Средний Сложный сказал

    Думаю примерно так: tar -cf - Directory | (cd / другой / каталог; tar -xvf -)

    Тогда это будет выглядеть как / другой / каталог / Каталог
    Таким образом я сжал каталог, а вы распаковали его в другом месте….

  2.   Мигель Анхель сказал

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

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

    Пока у меня есть следующее:

    пока читаешь строку
    do
    echo -e "$ линия"
    найти / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt Пока я читал файл, каждую его строку, но я не могу заставить его искать этот файл и извлекать информацию, если вы можете мне помочь, пожалуйста, спасибо. Ура

  3.   Памела галавиз сказал

    Большое спасибо за вклад 🙂

  4.   Марио Хавьер сказал

    привет ... Надеюсь, вы сможете помочь в следующем упражнении ... Разархивируйте файл в формате tgz в указанном каталоге, в дополнение к указанию пользователя и группы для всех существующих каталогов и файлов, и назначьте разрешения для файлов и каталогов
    примечание: файлы готовы к чтению и записи
    разрешение на выполнение каталогов

  5.   juank сказал

    ARCH-DESTINATION - это переменная, в которой мы хотим сохранить путь к файлу назначения, простите за избыточность. Затем к этой переменной мы указываем переменную DESTINATION, которая выше содержит путь к папке Documents, и добавляем «переменную» FILE, которая содержит имя файла. Если бы этот файл был, например, list.doc, переменная ARCH-DESTINATION была бы равна /home/Usuario/Documentos/listado.doc

  6.   Давайте использовать Linux сказал

    Это предыдущая статья. Вы можете получить к нему доступ на http://usemoslinux.blogspot.com

    Объятие! Павел.

  7.   Фрэнк сказал

    Доброе утро, приятель, просто спасибо, очень хорошо твой блог, но я не могу получить первую часть программирования в Bash, где я получил это спасибо, привет

  8.   Сайто Мордрауг сказал

    Две необычные части, мои искренние поздравления.

    Просто великолепно.

  9.   Фреди сказал

    Bien

  10.   Хьюго сказал

    Здравствуйте, я делаю программу с CASE, что я хочу, и я не знаю, как, например:

    echo Выбирает вариант:
    эхо
    эхо 1. вариант 1
    эхо 2. вариант 2
    эхо 3. вариант 3
    эхо 4. вариант 4
    эхо 5. Выход
    читать var
    case "$ var" в
    1)
    echo "Вы выбрали вариант 1"
    ;;
    2)
    echo "Вы выбрали вариант 2"
    ;;
    3)
    выбросил "….."
    ;;
    4)
    выбросил "…."
    ;;
    5)
    выбросил "…"

    ;;
    *)
    echo "неправильный вариант"
    ;;
    ESAC

    хорошо, что я не знаю, как это сделать, это когда я выбираю вариант 4, который должен выйти, спрашиваю, действительно ли я хочу выйти, и предлагаю мне 2 варианта ДА и НЕТ

    а другая - когда вы выбираете что-то другое, кроме чисел 1..5, не голосуйте за меня из сценария….

    Не могли бы вы мне помочь, спасибо.

  11.   ДАПАМА21 сказал

    Привет, я начал писать сценарии 1 месяц назад и благодаря вашим сообщениям о сценариях. Я сделаю около 15-20 штук. Заранее большое спасибо. Но теперь наш учитель дал нам работу, от которой я стал стагнировать. Поскольку учитель спрашивает:
    передавая каталог, скопируйте в свой дом все файлы, которые находятся в этом каталоге в алфавитном порядке, и назовите их file1 file2 и т.д ... и т.д ...
    Теперь я нахожусь в момент поиска или определения местоположения, я хотел использовать find, но, давая ему код ошибки, когда я помещал его через dev null, разрешения отклонены, тогда я ошибаюсь и помещаю местоположение, которое я здесь:
    найти $ 1 | grep "/ $ {1} \ $"
    но конечно с этим все выходят ...
    Большое спасибо, если вы это прочитали.
    Если вы можете мне помочь, это будет большим одолжением.

  12.   Луис сказал

    Я бы хотел, чтобы вы мне в этом помогли.
    1.-Введите целое число на клавиатуре и отобразите дважды и утроите это число на экране. 2.- Сделайте программу, чтобы решить, делится ли число, введенное с клавиатуры, на 3 или нет.
    3.- Сделайте программу, чтобы найти сумму: ???????? + ???????? + ???????? + ???????? +? ???????
    4.- Составьте программу, чтобы найти сумму 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Сделать программу, которая печатает слово Linux на экране 10 раз
    6.-Сделайте программу, которая печатает слово Linux на экране количество раз, указанное пользователем.
    7.-Введите количество в часах и преобразуйте их в минуты и секунды.
    8.-Рассчитайте площадь треугольника
    9.-Введите число с клавиатуры, затем, если вы введете 2, оно должно быть возведено в квадрат, 3 в кубе, 4 до четвертого и так далее до 6.
    10-Рассчитайте пенсию, которую должен платить студент, введите код специальности и просроченные дни:
    КОД
    СПЕЦИАЛЬНОСТЬ
    КОЛИЧЕСТВО
    ЗА ДЕНЬ
    1
    ВЫЧИСЛЕНИЕ
    160
    1
    2
    Уход
    150
    1.5
    3
    СЕКРЕТАРИАТ
    140
    2
    4
    ТУРИЗМ
    180
    2.5
    5
    АНАЛИТИЧЕСКАЯ
    160
    1
    Вы должны указать специальность, которую изучаете, размер пенсии, размер пенсии по умолчанию и общую сумму, подлежащую выплате.

  13.   Чарли сказал

    Здравствуйте, кто-нибудь может мне помочь?
    Мне нужно «Запросить три слова с клавиатуры и отобразить их в алфавитном порядке от А до Я»
    На языке Bash или sh для LINUX porfaborrrr