Дізнайтеся, як розрахувати букву DNI за допомогою сценарію Bash

Після задоволення вимога пункт мати можливість запускати скрипти bash, і зрозуміти як визначити функції, дізнайся як повертає значення у функціях bash. Для цього ми збираємося створити невелику «але потужну» програму в Bash обчислити літери DNI. У мене є хороша новина: Баш теж може бути встановленим на 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 від сценарію та кроку до поясніть свій код. Ехо з параметр "-e" давайте покажемо символ наступного рядка, ми визначили цей символ у рядок 7 і присвоюється змінній «ret».

Рядок 13: Я показую підрядок (підрядка) змінної CHAIN, описаної в рядку 8, з позиції 12. Завжди починаючи відлік з позиції 0.

Рядок 14: Від позиція 12 змінної CHAIN, я показую відрізок 5. Як ви перевірите, це відповідає підрядок "Linux".

Рядок 15: Я складаю a новий рядок, укладений у лапки Я починаю як «я вчусь в», продовжуючи з підрядком змінної 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, отже, після притон оголошуємо суму функції в рядку 4 визначаємо за допомогою «local» присвоєння першого з параметрів ($ 1) до змінної "а". Ідентична процедура в рядку 5, де ми призначаємо другий параметр a ($ 2) змінній «b». У рядку дев'ятий ми називаємо функцію суми з двома параметрами, які будуть перетворені за механізмом, описаним у змінні "a" і "b", а за допомогою "return" ми повертаємо їх доданими, як це можна легко побачити в інструкції з експлуатації.

Ми призначаємо змінну "return" у рядок 10 - результат виконання суми функції.

Після вивчення та розуміння того, як практикуються повернення значень та присвоєння змінним Давайте подивимось нашу програму розрахунок букв 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 лист нашого DNI відповідає числовий модуль 23. Це є, ділимо число на 23 y замість того, щоб дивитись на фактор, ми спостерігаємо решту поділу. Інші слова, як числа, що діляться на 23, дадуть нуль, лист, який йому відповідає «T», оскільки це - позиція 0, як ми бачили у сценарії вище, всі підрядки починають відлік з нуля. Тобто за допомогою модуля ми завжди отримуватимемо числа від 0 (буква "Т") до 22 (літера "О"). У Bash, як і в інших мовах модуль отримується за допомогою відсоткового оператора «%».

В у рядку 5 визначаємо літери за вашим замовленням. Це очевидно, порядок змінити не можна для надійних результатів. У рядку if 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.    Зображення заповнювача Педро Руїса Ідальго - сказав він

      Омар,

      Як ви вже згадували, ситуація не дуже перспективна: usb заборонений, а DVD-диск пошкоджений. Але ви також коментуєте, що "комп’ютер старий", це означає, що у вас є новий. Спробуйте встановити інсталяцію на жорсткий диск із робочого комп’ютера та спробувати встановити її з цього диска.

      привіт

    2.    Цезар Дельба - сказав він

      У вас є комп’ютер і знімна коробка? Встановіть жорсткий диск старого комп’ютера у знімну коробку USB та запустіть інсталяційний диск.
      Linux та Unix не враховують обладнання на рівні завантаження, за допомогою якого ви можете знову вставити диск із встановленим Linux.

    3.    Омар Б.М. - сказав він

      Щиро дякую, я кажу вам, що те, що я зробив, це перехід від Ubuntu 16.04 до Lubuntu 16.04 в рамках тієї самої операційної системи, хе-хе, і ось як добре працював мій старий комп'ютер, привіт з Колумбії.