Програмирање у басх - 2. део

Други део овога мини-туториал програмирање у Басх, где учимо да користимо циклуса и друге алате који ће нам помоћи да побољшамо функционалности нашег скрипте.

Ако је условно

Функција Иф је да примени филтер и изврши операцију или задатак за сваку примењену врсту филтера. Његова структура је следећа:

Ако је [услов]; затим команде елиф [услов]; затим елсе наредбе; фи команде

Пример је приказан поред петље Фор у одговарајућем одељку.

Циклуси

1. Док: извршаваће све наредбе наведене између до и готова све док је услов тачан. Ако му желимо проследити операторе поређења, израз мора бити у заградама.

док ЦОНДИТИОН / ЦОММАНД раде наредбе извршене

Пример: табела множења броја

#! / бин / басх Кс = 1 ецхо "Унесите број и притисните ЕНТЕР" прочитајте М # Петља контролише да је Кс мање или једнако 10 док [$ Кс –ле 10] до # У Р чувамо множење Кс са МР = $ [Кс * М] # Ово множење је одштампано на одјеку екрана „$ М * $ Кс = $ Р“ # С дозволом, повећавамо вредност Кс за 1 јединицу нека је Кс = $ Кс + 1 готово

2. За: чува листу елемената у променљивој, која ће се користити за извођење одређених операција са сваким циклусом.

за ВАРИАБЛЕ у ЕЛЕМЕНТС радите наредбе извршене

Пример: програм који копира датотеку из једне фасцикле у другу, замењујући стару датотеку.

# / бин / басх # Успостављамо директоријуме извора и одредишта ОРИГИН = / хоме / усер / Довнлоадс ДЕСТИНАТИОН = / хоме / усер / Доцументс # Позиционирамо се у изворни цд $ ОРИГИН # Од свих датотека желимо само ону која је # позовите ФИЛЕ фор ФИЛЕ у * до АРЦХ-ДЕСТИНАТИОН = "$ ДЕСТИНАТИОН / $ ФИЛЕ" # -ф филтрира нас редовне датотеке, јер директоријуми # ништа добро за нас. –Не филтрира # датотеке „новије“ од оних # које се налазе у одредишном директоријуму ако је [-ф $ ФИЛЕ] && [$ ФИЛЕ –нт $ АРЦХ-ДЕСТИНАТИОН]; затим ехо "Копирање $ ФИЛЕ ..." # копирамо датотеку са цп цп $ ФИЛЕ $ АРЦХ-ДЕСТИНАТИОН фи готово #Ве цд за излаз из директоријума цд

Још један пример: скрипта у којој корисник мора да погађа случајан број који генерише рачунар.

# / бин / басх # Случајан број се генерише од 1 до 10, # се чува у СЛУЧАЈНОМ СЛУЧАЈУ = $ [$ РАНДОМ% 10 + 1] док [1] ​​до ецхо –н "Унесите број:" прочитајте НУМ # Упоредите да ли је број који је корисник одабрао # једнак СЛУЧАЈНОМ; не заборавите да користите $ за процену # вредности променљивих, а не њихових имена ако [„$ НУМ –ек“ $ РАНДОМ “]; затим одјекните "Добро сте схватили!" #бреак омогућава завршавање петље током прекида #Ако је број мањи од РАНДОМ елиф [“$ НУМ –гт“ $ РАНДОМ “]; онда одјекни "Мање је" "Ако не, већи је од СЛУЧАЈНОГ, иначе одјекује" ТО ЈЕ веће "

3. До: прилично слична структури са Док, осим што се код увек извршава док је процена услова негативна, то јест, програм наставља да се извршава „све док се услов не појави“

док ЦОНДИТИОН / ЦОММАНД не изврше наредбе

Пример: штампајте бројеве 10-20 у опадајућем редоследу

#! / бин / басх ЦОНТ = 20 # Све док је бројач мањи од 10 (-лт, "ниже # него"), код се извршава до [$ ЦОНТ -лт 10]; ехо "ЦОУНТЕР $ ЦОНТ" #А ЦОНТ се одузима јединици нека је ЦОНТ- = 1 готово

4. Изаберите: овај последњи циклус је посебан случај, јер се обично користи за брзо прављење менија. Ради слично петљи Фор.

изаберите ВАРИАБЛЕ на ЛИСТУ извршених команди

Пример: дајте кориснику могућност да настави или заврши скрипту.

#! / бин / басх #итем је променљива која одговара на оно што # корисник одабере, Настави и Заврши су # опције које су му доступне, мада се могу додати и друге опције завршите програм, а затим са прекидом излазимо из циклуса. иф [$ итем = "Финисх"]; па прекид фи готов
Хвала Јуан Царлос Ортиз!

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

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   Средње тешко дијо

    Мислим да је отприлике овако: тар -цф - Директоријум | (цд / отхер / дирецтори; тар -квф -)

    Тада би изгледало као / неки други / директоријум / директоријум
    На тај начин сам компресовао директоријум, а ви га декомпримујете на другом месту….

  2.   Мигуел Ангел дијо

    Здраво, добри туто, учим о тој теми и све је у реду, само што нисам успео да направим програм који ми помаже, да видим да ли ми можеш помоћи.

    Морам да направим циклус, у којем ће као параметре добити листу изворне датотеке, ова листа доноси само имена (без наставка), тако да циклус чини следеће, потражите наведено име примљено у директоријуму (који ћемо потражити) , издвојите и копирајте датотеку (пуно име већ са наставком) и апсолутну путању и створите је у другој одредишној датотеци.

    За сада имам следеће:

    док читати ред
    do
    ецхо -е "$ линија"
    финд / хоме / миусер / доф "$ лине" -екец реадлинк -ф {};
    готово <тестлист.ткт До сада сам прочитао датотеку, сваки ред који има, али не могу да је потражим и извучем информације, ако ми можете помоћи, хвала. Живели

  3.   Памела галавиз дијо

    Пуно вам хвала на доприносу 🙂

  4.   Марио Јавиер дијо

    бок ... надам се да можеш да помогнеш у следећој пракси ... Распакујте датотеку у тгз у наведеном директоријуму, уз спецификацију корисника и групе за све постојеће директоријуме и датотеке и додељивање дозвола датотекама и директоријумима
    напомена: датотеке спремне за читање и писање
    дозвола за извршење директорија

  5.   Јуанк дијо

    АРЦХ-ДЕСТИНАТИОН је променљива у којој желимо да сачувамо путању до одредишне датотеке, осим за сувишност. Затим овој променљивој указујемо на променљиву ДЕСТИНАТИОН, која горе садржи путању до директоријума Доцументс и додајемо „променљиву“ ФИЛЕ која садржи име датотеке. Да је та датотека, на пример, лист.доц, променљива АРЦХ-ДЕСТИНАТИОН била би једнака /хоме/Усуарио/Доцументос/листадо.доц

  6.   Користимо Линук дијо

    То је претходни чланак. Можете му приступити на http://usemoslinux.blogspot.com

    Загрљај! Паул.

  7.   Искрен дијо

    Добро јутро пријатељу само хвала, јако добро твој блог, али не могу да добијем први део Програмирања на Басху, где га добијам хвала, поздрав

  8.   Саито Мордрауг дијо

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

    Једноставно дивно.

  9.   Фреди дијо

    Биен

  10.   Хуго дијо

    Здраво, правим програм са ЦАСЕ, шта желим да ради, а не знам како, на пример:

    ецхо бира опцију:
    одјек
    ехо 1. опција 1
    ехо 2. опција 2
    ехо 3. опција 3
    ехо 4. опција 4
    ехо 5. Излаз
    читај вар
    случај "$ вар" у
    1)
    ецхо "Одабрали сте опцију 1"
    ;;
    2)
    ецхо "Одабрали сте опцију 2"
    ;;
    3)
    Избацио "….."
    ;;
    4)
    Избацио "…."
    ;;
    5)
    Избацио "…"

    ;;
    *)
    ехо "погрешна опција"
    ;;
    да је Ц.

    ок оно што не знам како се то ради је да када изаберем опцију 4 која треба да изађе, питам да ли стварно желим да изађем и да ми 2 опције И & Н

    а друга је да када изаберете нешто друго осим бројева 1..5, не гласајте за мене из скрипте ....

    Можете ли ми помоћи, хвала.

  11.   ДАПАМА21 дијо

    Здраво, почео сам са скриптирањем пре месец дана и захваљујући вашим објавама у скриптама. Урадио бих око 1-15. Хвала вам пуно унапред. Али сада нам је наша учитељица дала посао у којем сам стагнирала. Пошто учитељ пита:
    прослеђујући директоријум, копирајте кући све датотеке које се налазе у том директоријуму абецедно и именујући их филе1 филе2 итд ... итд ...
    Сада сам у тренутку проналажења или лоцирања, желео сам да користим финд, али када му дајем код грешке док сам га стављао кроз дев нулл, одбијене дозволе тада грешим и стављам лоцате овде сам:
    пронађите $ 1 | греп "/ $ {1} \ $"
    али наравно са овим сви излазе ...
    Хвала вам пуно ако сте га прочитали.
    Ако ми можете помоћи, била би то велика услуга.

  12.   Луис дијо

    Волео бих да ми помогнете око овога.
    1.-Унесите цео број на тастатури и прикажите два пута и утростручите тај број на екрану. 2.- Направите програм који ће одлучити да ли је број који уноси тастатура дељив са 3 или не.
    3.- Направите програм за проналажење збира: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Направите програм за проналажење збира 1 + 3 + 5 + 7 + 9 · · · + (2н + 1).
    5.-Направите програм који 10 пута штампа реч Линук на екрану
    6.-Направите програм који на екрану штампа реч Линук онолико пута колико је корисник назначио.
    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.   Цхарли дијо

    Здраво, може ли неко да ми помогне?
    Треба ми «Затражи три речи помоћу тастатуре и прикажи их абецедним редом од А до Ж»
    На Басх или сх језику за ЛИНУКС порфаборррр