Научитесь вычислять букву DNI с помощью сценария Bash

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


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

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

*

*

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

  1.   Омар Б.М. сказал

    Здравствуйте, может кто-нибудь мне помочь, мне нужно установить lubuntu на мой старый рабочий стол, но он не позволяет мне установить через USB, а DVD-диск поврежден, я просто хочу установить http://www.plop.at в Ubuntu 16.04 LTS, но я не знаю, как это сделать. Спасибо

    1.    Изображение местозаполнителя для Pedro Ruiz Hidalgo сказал

      Омар,

      Как вы упомянули, ситуация не очень многообещающая: использование usb запрещено, а dvd-привод поврежден. Но вы также отмечаете, что «компьютер старый», значит, у вас новый. Попробуйте поместить установку на жесткий диск со своего рабочего компьютера и попробуйте установить ее с этого диска.

      привет

    2.    Сезар Дельба сказал

      У вас есть компьютер и съемный бокс? Смонтируйте жесткий диск старого компьютера в съемный usb-бокс и запустите установочный диск.
      Linux и Unix не принимают во внимание оборудование на уровне загрузки, с которым вы можете снова поставить диск с установленным Linux.

    3.    Омар Б.М. сказал

      Большое спасибо. Сообщаю вам, что я перешел с Ubuntu 16.04 на Lubuntu 16.04 в той же операционной системе, хе-хе, и именно так мой старый компьютер работал хорошо, хе-хе, привет из Колумбии.