След удовлетворяване на изисквания за да можете да стартирате 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) към променливата "a". Идентична процедура на ред 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 mпоказваме числото, тире и буквата, съответстващи на позицията според изчисляването на модула и подниза.
Тестване на нашия 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 в рамките на същата операционна система хехе и по този начин старият ми компютър работеше добре хехе поздрави от Колумбия.