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

Втора част от това мини-урок програмиране в Тряскам, където се учим да използваме ciclos и други инструменти, които ще ни помогнат да подобрим функционалностите на нашите скриптове.

Ако е условно

Функцията на If е да приложи филтър и да извърши операция или задача за всеки тип прилаган филтър. Неговата структура е следната:

Ако [състояние]; след това elif команди [условие]; след това команди else; команди fi

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

цикли

1. Докато: ще изпълнява всички команди, посочени между do и done, стига условието да е вярно. Ако искаме да му предадем оператори за сравнение, изразът трябва да е в скоби.

докато CONDITION / COMMAND изпълняват команди

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

#! / bin / bash X = 1 echo "Въведете число и натиснете ENTER" прочетете M # Цикълът контролира, че X е по-малко или равно на 10, докато [$ X –le 10] do #In R съхраняваме умножението на X по MR = $ [X * M] # Това умножение се отпечатва на ехото на екрана "$ M * $ X = $ R" # С let увеличаваме стойността на X с 1 единица, нека X = $ X + 1 готово

2. За: съхранява списък с елементи в променлива, която ще се използва за извършване на определени операции с всеки цикъл.

за VARIABLE в ELEMENTS се правят команди

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

# / bin / bash # Установяваме директории с източник и дестинация ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Позиционираме се в cd източника $ ORIGIN # От всички файлове искаме само този, който е # извикайте FILE за FILE в * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f ни филтрира редовни файлове, тъй като директориите # нищо добро за нас. –Не филтрира # файла „по-нови“ от тези #, намерени в целевата папка, ако [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; след това ехо "Копиране на $ FILE ..." # копираме файла с cp cp $ FILE $ ARCH-DESTINATION fi готово #We cd за изход от папката cd

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

# / bin / bash # Случайно число се генерира от 1 до 10, # се записва в СЛУЧАЙНА СЛУЧАЙНА = $ [$ СЛУЧАЙНА% 10 + 1], докато [1] do echo –n "Въведете число:" прочетете NUM # Сравнете дали избраният от потребителя номер е #equal to RANDOM; не забравяйте да използвате $ за оценка на # стойностите на променливите, а не имената им, ако [“$ NUM –eq“ $ RANDOM ”]; след това ехо "Разбрахте добре!" #break позволява прекратяване на цикъла по време на почивка # Ако числото е по-малко от СЛУЧАЙНО elif [„$ NUM –gt“ $ RANDOM “]; след това ехо "По-малко е" "Ако не, то е по-голямо от СЛУЧАЙНО, друго ехо" ИЗЛОЖЕН Е ПО-голямо "fi готово

3. До: доста подобна по структура на While, с изключение на това, че кодът винаги се изпълнява, докато оценката на условието е отрицателна, тоест програмата продължава да изпълнява "докато настъпи условието"

докато CONDITION / COMMAND правят команди

Пример: отпечатайте числата 10-20 в низходящ ред

#! / bin / bash CONT = 20 # Докато броячът е по-малък от 10 (-lt, „по-нисък # от”), кодът се изпълнява до [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT се изважда от единица нека CONT- = 1 готово

4. Изберете: този последен цикъл е специален случай, тъй като обикновено се използва за бързо създаване на менюта. Той работи подобно на цикъла For.

изберете VARIABLE в СПИСЪК на изпълнените команди

Пример: дайте на потребителя възможност да продължи или да прекрати скрипта.

#! / bin / bash #item е променлива, която отговаря на това, което # потребителят избере, Продължи и Завърши са # опциите, достъпни за него, въпреки че могат да се добавят други опции # още изберете елемент в Продължи Завърши направете # Ако потребителят избере приключете програмата, след което с почивка излизаме от цикъла. ако [$ item = "Finish"]; след това прекъснете fi готово
Благодаря ти Хуан Карлос Ортис!

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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

  1.   Средно Труден каза той

    Мисля, че нещо подобно: tar -cf - Directory | (cd / other / directory; tar -xvf -)

    Тогава ще изглежда като / друга / директория / Директория
    По този начин аз компресирах директория и вие я декомпресирате на друго място ....

  2.   Miguel Angel каза той

    Здравейте, добър преподавател, уча по темата и всичко е наред, само че не успях да направя програма, която да ми помогне, за да видя дали можете да ми помогнете, моля.

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

    Засега имам следното:

    докато четете ред
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    готово <testlist.txt Досега прочетох файла, всеки ред, който има, но не мога да го накарам да търси този файл и да извлече информацията, ако можете да ми помогнете, моля, благодаря. Наздраве

  3.   Памела галавиз каза той

    Благодаря ви много за приноса 🙂

  4.   Марио Хавиер каза той

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

  5.   Джуанк каза той

    ARCH-DESTINATION е променлива, в която искаме да запазим пътя на целевия файл, освен за излишък. След това към тази променлива посочваме променливата DESTINATION, която по-горе съдържа пътя към папката Documents и добавяме "променливата" FILE, която съдържа името на файла. Ако този файл беше например list.doc, променливата ARCH-DESTINATION би била равна на /home/Usuario/Documentos/listado.doc

  6.   Нека използваме Linux каза той

    Това е предишната статия. Можете да получите достъп до него на http://usemoslinux.blogspot.com

    Прегръдка! Павел.

  7.   Откровен каза той

    Добро утро, приятел, просто благодаря, вашият блог е много добър, но не мога да получа първата част от Програмиране в Bash, откъдето го получа, благодаря, поздрави

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

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

    Просто прекрасно.

  9.   Fredy каза той

    Bien

  10.   Уго каза той

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

    echo Избира опция:
    ехо
    ехо 1. вариант 1
    ехо 2. вариант 2
    ехо 3. вариант 3
    ехо 4. вариант 4
    ехо 5. Изход
    прочетете вар
    случай "$ var" в
    1)
    ехо "Избрахте опция 1"
    ;;
    2)
    echo "Избрахте опция 2"
    ;;
    3)
    изхвърли "... .."
    ;;
    4)
    изхвърли "..."
    ;;
    5)
    изхвърли "..."

    ;;
    *)
    ехо "грешен вариант"
    ;;
    ESAC

    добре това, което не знам как да направя е, че когато избера опция 4, която трябва да излезе, попитайте дали наистина искам да изляза и ми дайте 2 опции Y & N

    а другото е, че когато изберете нещо различно от цифрите 1..5, не гласувайте за мен от скрипта ....

    Бихте ли ми помогнали благодаря.

  11.   ДАПАМА21 каза той

    Здравейте, започнах да правя скриптове преди 1 месец и благодарение на публикациите ви в скриптове. Ще направя около 15-20. Благодаря много предварително. Но сега нашият учител ни даде работа, на която станах в застой. Тъй като учителят пита:
    предавайки директория, копирайте в дома си всички файлове, които са в нея, по азбучен ред и ги именувайте file1 file2 и т.н. ... и т.н.
    Сега съм в момента на намиране или намиране, исках да използвам find, но когато му дадох код за грешка, докато го пуснах през dev null, разрешенията, отказани, тогава греша и поставям locate, който съм тук:
    намерете $ 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.   Charly каза той

    Здравейте, може ли някой да ми помогне?
    Имам нужда от „Изискване на три думи по клавиатура и показване по азбучен ред от А до Я“
    На език Bash или sh за LINUX porfaborrrr