После удовлетворения требование для уметь запускать сценарии bash, и понять как определять функции, узнать, как возвращаемые значения в функциях bash. Для этого мы собираемся создать небольшую «но мощную» программу на Bash, которая вычислить буквы ДНР. У меня хорошие новости: Баш тоже может быть установлен в Windows 10. С чем можно добавить всю мощь Linux в операционные системы, скажем так ... разные.
Прежде всего, мы должны понять, как подстроки, который, как и в любом другом языке, имеет возможность вернуть части строки от обозначения цепи, положения и длины сегмента. Давайте посмотрим на пример такого поведения. Мы создаем наш скрипт с
$ touch prueba_substring $
Затем мы добавляем следующий код с вашим предпочтительным редактором. В терминальном режиме мой предпочтительный редактор - mcedit. Но в последнее время я вижу, что нано набирает силу.
#!/usr/bin/env bash # Demo comportamiento de substrings en Bash # Pedro Ruiz Hidalgo # version 1.0.0 # Febrero 2017 ret="\n" CADENA="siempre uso Linux con Ubuntu y Ubunlog, claro!" # "0123456789012345678901234567890123456789012345" # " 1 2 3 4 " # (usa la regla para medir los caracteres) echo -e $ret ${CADENA:12} echo -e $ret ${CADENA:12:5} echo -e $ret "Aprendo en ${CADENA:31:7}" exit 0
Добавляем разрешения и выполняем так:
$ chmod +x prueba_substring $ ./prueba_substring $
Если все прошло хорошо, он должен вернуть следующий результат:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
Подстрока Операция
Как видно выше Я выделил строки с 13 по 15 сценария и перейдите к объясни свой код. Echo с параметр "-e" давайте покажем символ следующей строки, мы определили этот символ в строка 7 и присвоена переменной «ret».
Строка 13: я показываю подстроку (подстрока) переменной CHAIN, описанной в строке 8, с позиции 12. Всегда начинать отсчет с позиции 0.
Строка 14: От позиция 12 переменной CHAIN, я показываю сегмент 5. Как вы убедитесь, это соответствует подстрока "Linux".
Строка 15: я сочиняю новая строка в кавычках Я начинаю со слов «я узнаю в», чтобы продолжить с подстроки переменной CHAIN из позиции 31, взяв сегмент 7: это соответствует «Ubunlog».
Функции постбэка
Механизм возврата в Bash создается командой «return», хотя, когда нам нужно сопоставить его с переменной Bash, он реализует «странный» механизм, к которому вы должны привыкнуть. Давайте посмотрим на следующий пример:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
Функции всегда должны быть определены перед их использованием в Bash, поэтому после притон мы объявляем функцию sum в строке 4 определяем с помощью «local» назначение первого из параметров ($ 1) в переменную "a". Идентичная процедура в строке 5, где второй параметр a ($ 2) присваиваем переменной «b». В строке девять мы вызываем функцию суммы с двумя параметрами, которые будут преобразованы с помощью механизма, описанного в переменные "a" и "b" и с "return" возвращаем их добавленными, что легко увидеть в инструкциях к функциям.
Присваиваем переменную return в строка 10 результат выполнения функции sum.
После изучения и понимания того, как практикуется возврат значений и присваивание переменным Пойдем посмотреть нашу программу вычисление букв DNI с помощью Bash.
Скрипт для вычисления букв DNI с помощью Bash
#!/usr/bin/env bash nl="\n" LETRAS="TRWAGMYFPDXBNJZSQVHLCKEO" NORMAL=0 ERROR=66 if [ $# -lt 1 ]; then echo -e "$nl Cálculo DNI, introduce número$nl" read -r ndni [ -z "${ndni//[0-9]}" ] && [ -n "$ndni" ] || echo "Sólo números" && exit $ERROR else ndni=$1 fi modulo () { return $(( $ndni % 23 )) } modulo ndni mod=$? echo $ndni-${LETRAS:$mod:1} exit $NORMAL
La письмо нашего ДНР соответствует числовой модуль 23, Esto es, делим число на 23 y вместо того, чтобы смотреть на частное, мы наблюдаем остальную часть деления. Другими словами, вроде числа, делящиеся на 23, дают ноль, письмо, которое ему соответствует «Т», так как это это позиция 0, как мы видели в приведенном выше сценарии, все подстроки начинают отсчет с нуля. То есть с модулем мы всегда будем получать числа от 0 (буква «Т») до 22 (буква «О»). В Bash, как и в других языках модуль получается с помощью оператора процента «%».
En la в строке 5 мы определяем буквы в вашем заказе. Это очевидно, заказ не может быть изменен для надежных результатов. В случае линии 9 мы спрашиваем если при вызове скрипта в качестве параметра было число. Если параметр отсутствует, мы запрашиваем его на клавиатуре с помощью инструкций в строках с 11 по 13. Если скрипт был вызван с номером для расчета порядка в строке 15, присвойте этот параметр переменной «ndni».
В строке 23 мы ссылаемся на функцию по модулю через параметр переменная «ndni», либо она была собрана как параметр в bash, либо с клавиатуры как ввод. В строке 24 возвращение функции присваивается переменной «mod». На линии 25 ммы показываем число, тире и букву, соответствующую позиции согласно вычислению модуля и подстроки.
Тестирование нашего скрипта DNI
$ ./dni 12345678 12345678-Z
Хорошо,
$ ./dni Cálculo DNI, Introduce número
Все наши скрипты должны включать параметр «-a» для автора и еще один «-h» для справки и синтаксиса. Как мы видели в предыдущих статьях, я оставляю это на ваше усмотрение, чтобы не усложнять код.
Я надеюсь и надеюсь, что эта статья была вам интересна.
Здравствуйте, может кто-нибудь мне помочь, мне нужно установить lubuntu на мой старый рабочий стол, но он не позволяет мне установить через USB, а DVD-диск поврежден, я просто хочу установить http://www.plop.at в Ubuntu 16.04 LTS, но я не знаю, как это сделать. Спасибо
Омар,
Как вы упомянули, ситуация не очень многообещающая: использование usb запрещено, а dvd-привод поврежден. Но вы также отмечаете, что «компьютер старый», значит, у вас новый. Попробуйте поместить установку на жесткий диск со своего рабочего компьютера и попробуйте установить ее с этого диска.
привет
У вас есть компьютер и съемный бокс? Смонтируйте жесткий диск старого компьютера в съемный usb-бокс и запустите установочный диск.
Linux и Unix не принимают во внимание оборудование на уровне загрузки, с которым вы можете снова поставить диск с установленным Linux.
Большое спасибо. Сообщаю вам, что я перешел с Ubuntu 16.04 на Lubuntu 16.04 в той же операционной системе, хе-хе, и именно так мой старый компьютер работал хорошо, хе-хе, привет из Колумбии.