Софтвер

Водич за почетнике БАСХ - Услови и променљиве

Аутор: John Stephens
Датум Стварања: 21 Јануар 2021
Ажурирати Датум: 18 Може 2024
Anonim
Unreal Engine 5 Sequencer for Beginners
Видео: Unreal Engine 5 Sequencer for Beginners

Садржај

Научите како радити са информацијама и доносити одлуке у БАСХ-у

Добродошли у трећи део "Водича за почетнике БАСХ". Ако сте пропустили претходна два чланка, вероватно ћете желети да знате шта овај водич разликује од осталих БАСХ сценарија.

Прва два водича можете видети ако посетите:

  • Водич за почетнике БАСХ - Хелло Ворлд
  • Водич за почетнике БАСХ - улазни параметри

Ако сте нови у БАСХ сценарију, препоручује се да се вратите назад и прочитате прва два водича пре него што наставите са овим.

Овај водич ће истакнути како се користе условне изјаве за тестирање корисничког уноса и за контролу начина функционисања скрипте.


Инсталирајте рсстаил

Да бисте пратили овај водич, мораћете да инсталирате апликацију за командну линију која се зове рсстаил и која се користи за читање РСС феедова.

Ако користите дистрибуцију засновану на Дебиан / Убунту / Минт, упишите сљедеће:

судо апт инсталл рсстаил

За Федора / ЦентОС итд упишите следеће:

днф инсталл рсстаил

За опенСУСЕ откуцајте следеће:

зиппер инсталл рсстаил

Изјава ИФ

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

судо нано рссгет.сх

У нано едитор унесите следећи текст:

#! / бин / басх
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/невс;

Сачувајте датотеку притиском на ЦТРЛ и О а затим изађите притиском на ЦТРЛ и Икс.

Уверите се да је скрипта извршна.


цхмод + к рссгет.сх

Покрените скрипту уписивањем следећег:

сх рссгет.сх

Скрипта ће вратити листу наслова из ЕСПН РСС фида.

То није претјерано корисна скрипта јер само дохваћа наслове из једног РСС феед-а, али штеди морате памтити пут до ЕСПН РСС фида.

Отворите поново рссгет.сх скрипту у нано-у и уредите датотеку тако да изгледа:

#! / бин / басх
иф [$ 1 = "вербосе"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
фи

Поново покрените скрипту уписивањем следећег:

сх рссгет.сх вербосе

Овог пута се РСС феед враћа са насловом, везом и описом.

Анализирајмо скрипту мало детаљније:

Тхе #! / бин / басх појављује се у сваком сценарију који напишемо. Сљедећи ред у основи проматра први улазни параметар који је дао корисник и успоређује га са ријечју "вербосе". Ако се улазни параметар и реч "вербосе" подударају, линије између онда ифису покренути.


Горња скрипта је очигледно промашена. Шта се догађа ако уопште не наведете улазни параметар? Одговор је да добијете грешку у складу са неочекиваним оператером.

Друга велика мана је да ако не наведете реч "вишеструки", онда се ништа уопште не дешава. У идеалном случају, ако не наведете реч вербосе, скрипта би вратила листу наслова.

Поново користите нано да бисте изменили рссгет.сх датотеку и изменили код на следећи начин:

#! / бин / басх
иф [$ 1 = "вербосе"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
фи

Сачувајте датотеку и покрените је тако што ћете откуцати следеће:

сх рссгет.сх вербосе

Појавиће се листа наслова, описа и веза. Сада је покрените поново на следећи начин:

сх рссгет.сх наслови

Овог пута се појављује само листа наслова.

Додатни део скрипте је на линији 4 и уводи друго изјава. У основи, скрипта сада каже да ли је први параметар реч "вербосе", набавите опис, линкове и наслове за РСС феед, али ако је први параметар било шта друго, само набавите листу наслова.

Сценариј је мало побољшан, али је и даље грешан. Ако не унесете параметар, и даље ћете добити грешку. Чак и ако наведете параметар, само ако кажете да не желите вербосе, не значи да желите само наслове. На пример, можда сте погрешно написали вербосе, или сте уписали голубове, што је, наравно, бесмислено.

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

Уредите рссгет.сх скрипту тако да изгледа:

#! / бин / басх
ако је [$ 1 = "све"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
елиф [$ 1 = "опис"]
онда
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
фи

У овом примеру је вербоза замењена са свима. Једноставније је, а то није важан део. Горња скрипта уводи елиф што је укратко рећи ЕЛСЕ ИФ.

Сада скрипта функционише на следећи начин. Ако трчиш сх рссгет.сх алл тада добијате описе, линкове и наслове. Ако, уместо тога, само трчите сх рссгет.сх опис, само ћете добити наслове и описе. Ако унесете било коју другу реч, добићете листу наслова.

Ово уводи начин брзог проналажења листе увјетних изјава. Алтернативни начин поступања елиф је да се користи оно што је познато као угнијежђено ако изјаве.

Следи пример који показује како се угнездило ако изјаве раде:

#! / бин / басх
ако је [$ 1 = "бејзбол"]
онда
ако је [$ 2 = "све"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
елиф [$ 2 = "опис"]
онда
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
фи
друго
ако је [$ 2 = "све"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
елиф [$ 2 = "опис"]
онда
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
фи
фи

Слободно упишите све то, ако желите, или га копирајте и залепите у своју рссгет.сх датотеку.

Горња скрипта уводи 2. параметар који вам омогућава да одаберете или наслове бејзбол-а или све наслове у РСС фееду.

Да бисте га покренули откуцајте следеће:

сх рссгет.сх бејзбол сви

или

сх рссгет.сх све

Можете, наравно, све заменити описима или насловима да бисте пружили само описе или само наслове.

У основи, горњи код каже ако је први параметар "базелбалл", а затим погледајте други иф изјаву која је иста као и из претходне скрипте. Иначе, ако је први параметар било шта друго, прикажите опште наслове са ЕСПН-а. Одатле би у оба случаја гледали у унутрашњост ако се изјава поново одлучи да ли да прикаже наслове, описе или све остало.

Та је скрипта дата само као пример угнијежђене ИФ изјаве и толико је ствари погрешно са том скрипту да би требало да се објасни још један чланак. Главно питање је да није скалабилан.

Замислите да желите да додате још један РСС феед са друге странице или чак другачији спорт на истој веб локацији? Скрипта би постала огромна и ако бисте одлучили да желите да се интерна изјава ИФ промени, морали бисте је променити на више места.

Иако постоји време и место за угнездјене ИФ, они би требало да их користе штедљиво. Обично постоји начин поновног факторирања кода тако да вам уопште не треба угнијежђени ИФ. О овој теми ћу говорити у будућем чланку.

Погледајмо сада исправљање проблема људи који уносе дуфф параметре. На пример, у горњој скрипти, ако корисник унесе нешто друго осим „басебалл“ -а као првог параметра, онда се листа чланака појављује из општег фида наслова, без обзира на то шта је унето.

Поред тога, ако корисник не унесе „све“ или „опис“ као 2. параметар, онда је задана листа наслова која може или не мора бити корисник.

Погледајте следећу скрипту (или је копирајте и залепите у своју рссгет.сх датотеку.

#! / бин / басх
ако је [$ 1 = "наслови"] || [$ 1 = "бејзбол"]
онда
ако је [$ 2 = "све"] || [$ 2 = "опис"] || [$ 2 = "наслов"]
онда
иф [$ 1 = "наслови"]
онда
ако је [$ 2 = "све"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
елиф [$ 2 = "опис"]
онда
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
фи
друго
ако је [$ 2 = "све"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
елиф [$ 2 = "опис"]
онда
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
фи
фи
фи
фи

Прво што треба приметити је да је скрипта сада прилично велика и да брзо можете видети како изван контроле могу угасити ИФ угрубо.

Бит који је важан у овој скрипти је изјава ИФ || изјава ТАКО одјељак на линији 2 и линији 4.

Тхе || за ОР. Дакле, линијаако је [$ 1 = "наслови"] || [$ 1 = "бејзбол"]проверава да ли је 2. параметар једнак "насловима" или "бејзболу". Ако није, тада је изјава ИФ потпуна јер је нема друго изјава за најудаљеније АКО.

Слично је и на линији 4ако је [$ 2 = "све"] || [$ 2 = "опис"] || [$ 2 = "наслов"]провјерава је ли први параметар једнак или "алл" или "десцриптион" или "титле".

Сад ако корисник покренесх рссгет.сх кромпир сирништа се не враћа док пре него што су добили списак наслова.

Супротно || је &&. Оператор && означава АНД.

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

#! / бин / басх
ако [$ # -ек 2]
онда
ако је [$ 1 = "наслови"] || [$ 1 = "бејзбол"]
онда
ако је [$ 2 = "све"] || [$ 2 = "опис"] || [$ 2 = "наслов"]
онда
иф [$ 1 = "наслови"]
онда
ако је [$ 2 = "све"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
елиф [$ 3 = "опис"]
онда
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/невс;
фи
друго
ако је [$ 2 = "све"]
онда
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
елиф [$ 2 = "опис"]
онда
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
друго
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс;
фи
фи
фи
фи
фи

Једини додатни бит у тој скрипти је друга спољна изјава ИФ, како следи:ако [$ # -ек 2]. Ако прочитате чланак о улазним параметрима, знат ћете да $ # враћа број унесених параметара. Тхе -ек означава једнаке. Изјава ИФ, дакле, проверава да ли је корисник унео два параметра и ако нису, једноставно се заустави без ичега. (Није нарочито љубазно).

Јасно је да је овај туториал прилично велик. У њему нема много тога што можете покрити, али можете научити помоћ око сређивања сценарија пре него што завршимо.

Последња наредба коју треба да научите о условним изјавама је изјава ЦАСЕ.

#! / бин / басх

ако [$ # -ек 2]
онда
случај $ 2 ин
наслови)
случај $ 1 ин
све)
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/невс
;;
Опис)
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/невс
;;
наслов)
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/невс
;;
есац
;;
бејзбол)
случај $ 1 ин
све)
рсстаил -д -л -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс
;;
Опис)
рсстаил -д -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс
;;
наслов)
рсстаил -у хттпс://ввв.еспн.цом/еспн/рсс/млб/невс
;;
есац
;;
есац
фи

Изјава случаја је љепши начин писања ИФ ЕЛСЕ ИФ ЕЛСЕ ИФ ЕЛСЕ ИФ.

На пример, ова логика

АКО воће = банане
ОВОГА
ЕЛСЕ ИФ воће = наранџе
ОВОГА
ЕЛСЕ ИФ воће = грожђе
ОВОГА
ЕНД ИФ

може се преписати као:

случај воћа је
банане)
урадите
;;
наранџе)
урадите
;;
грожђе)
урадите
;;
есац

У основи, прва ставка након случаја је ствар коју ћете упоређивати (тј. Воће).Онда је сваки предмет испред заграда онај са којим упоређујете и ако се подудара са линијама које су претходиле ;; ће бити вођен. Изјава случаја се прекида обрнутим есаком (што је случај уназад).

У рссгет.сх скрипту изјава случаја уклања неке од тих грозних гнездења, иако их у ствари не побољшава довољно.

Да бих заиста побољшао скрипту, морам да вас упознам са променљивим.

Погледајте следећи код:

#! / бин / басх
басебалл = "хттпс://ввв.еспн.цом/еспн/рсс/млб/невс"
хеадлинес = "хттпс://ввв.еспн.цом/еспн/рсс/невс"
дисплаи = ""
урл = ""
ако [$ # -лт 2] || [$ # -гт 2]
онда
ецхо "употреба: рссгет.сх [све | опис | наслов] [наслови | бејзбол]";
излаз;
фи
случај $ 1 ин
све)
дисплаи = "- д -л -у"
;;
Опис)
дисплаи = "- д -у"
;;
наслов)
дисплаи = "- у"
;;
есац
случај $ 2 ин
наслови)
урл = $ наслови;
;;
бејзбол)
урл = $ базелбалл;
;;
есац
рсстаил $ дисплаи $ урл;

Променљива се дефинише тако што ће јој дати име и доделити јој вредност. У горњем примеру су следећи додељивања променљивих:

басебалл = "хттпс://ввв.еспн.цом/еспн/рсс/млб/невс"
хеадлинес = "хттпс://ввв.еспн.цом/еспн/рсс/невс"
дисплаи = ""
урл = ""

Скрипта је тренутно једноставнија за управљање коришћењем променљивих. На примјер, сваки се параметар обрађује засебно, тако да нема угнијежђених ИФ исказа.

Варијабла приказа сада је постављена овисно о томе да ли сте одабрали све, опис или наслов, а УРЛ варијабла је постављена на вриједност наслови променљиве или вредности бејзбол променљива у зависности да ли сте изабрали наслови или бејзбол.

Наредба рсстаил сада само мора користити вриједност приказа и УРЛ-а да би се исправно изводила.

Иако су променљиве постављене само давањем имена, да бисте их заиста користили, морате поставити а $ пред њима. Другим речима, променљива = вредност поставља променљиву вредност док $ променљива значи, "Дајте ми садржај променљиве."

Следи последња скрипта овог водича.

#! / бин / басх
басебалл = "хттпс://ввв.еспн.цом/еспн/рсс/млб/невс"
хеадлинес = "хттпс://ввв.еспн.цом/еспн/рсс/невс"
фоотбалл = "хттпс://ввв.еспн.цом/еспн/рсс/нфл/невс"
кошарка = "хттпс://ввв.еспн.цом/еспн/рсс/нба/невс"
употреба = "употреба: рссгет.сх [све | опис | наслов] [бејзбол | наслови | фудбал | кошарка]"
дисплаи = ""
урл = ""
ако [$ # -лт 2] || [$ # -гт 2]
онда
ецхо $ употреба;
излаз;
фи
случај $ 1 ин
све)
дисплаи = "- д -л -у"
;;
Опис)
дисплаи = "- д -у"
;;
наслов)
дисплаи = "- у"
;;
*)
ецхо $ употреба;
излаз;
;;
есац
случај $ 2 ин
наслови)
урл = $ наслови;
;;
бејзбол)
урл = $ бејзбол;
;;
Фудбал)
урл = $ фудбал;
;;
Кошарка)
урл = $ кошарка;
;;
*)
ецхо $ употреба;
излаз;
есац
рсстаил $ дисплаи $ урл;

Горња скрипта уводи више РСС феедова и постоји варијабла употребе која говори кориснику како да користи скрипту ако не унесе 2 променљиве или ако унесе погрешне опције за променљиве.

Резиме

Ово је епски чланак и можда је прерано отишло. У следећем водичу показат ћу вам све могућности упоређивања за изјаве ИФ-а и даље има пуно више тога за разговор о варијаблама.

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

Нове Поруке

Изаберите Администрација

7 најбољих Виндовс таблета 2020
Технологиес

7 најбољих Виндовс таблета 2020

Наши уредници независно истражују, тестирају и препоручују најбоље производе; овде можете сазнати више о нашем процесу прегледа. Можемо примати провизије за куповине обављене путем наших одабраних ве...
Како измерити смањење буке у слушалицама
Живот

Како измерити смањење буке у слушалицама

Основе слушалица Најбоље слушалице по врсти Најбоље марке слушалица Најбоље слушалице по цени Најбоље слушалице би Лифестиле Рецензије слушалица Мерни део захтева основни софтвер за анализу аудио спе...