Водич за почетнике за Схелл Сцриптинг 4 Услови & Ако-онда Изјаве
У нашем водичу за скриптирање скрипти смо покрили довољно основе да бисте се требали осјећати угодно експериментирати. У наставку ове недеље, бавићемо се неким од забавнијих ствари, као што су услови и "ако-онда" изјаве.
Шта су услови?
У свакодневном језику кажемо да су услови услови који се морају испунити да би се нешто догодило. Да би мој лаптоп могао да се повеже на интернет, постоји неколико услова који морају бити испуњени, као што је поседовање ИСП-а, модема и / или роутера, укључивање лаптопа, итд. Прилично је једноставно, и ако постоји од тих захтева нису испуњени, резултат - мој лаптоп који се повезује са интернетом - не догађа се.
Услови у области рачунарства су слични. Можемо да тестирамо да ли се низ подудара са другим низом, без обзира да ли се он поклапа са другим низом, или чак и ако уопште постоји. Слично томе, можемо тестирати нумеричке аргументе да видимо да ли је један од њих већи, мањи или једнак другом. Да би се нешто догодило након што су задовољени услови теста, користимо изјаве "ако-онда". Њихов формат је прилично једноставан.
иф ЦОНДИТИОН
онда
цомманд1
цомманд2
…
цоммандн
фи
Иф Статементс
Хајде да покренемо кратку тест скрипту, хоћемо ли?
иф тест $ 1 -гт $ 2
онда
ецхо "$ 1 је већи од 2 $"
фи
Приметићете да само када је тај услов тачан, скрипта ће извршити следећу команду. У супротном, „иф“ изјава ће изаћи. Ако постоје наредбе након изјаве "иф", оне ће се покренути нормално. Додао сам следећи ред на крај горе наведеног скрипта да бих илустровао ово:
ецхо "Ово долази након изјаве иф"
Ево неких других нумеричких оператора које можете испробати:
- -ек: једнако
- -не: није једнако
- -лт: мање од
- -ле: мање или једнако
- -гт: већи од
- -ге: већи или једнак
Тестинг Стрингс
Сада, ако модификујемо прву линију наше скрипте да буде ово:
ако је тест $ 1 = $ 2
онда ће се стање тестирати ако су два једнака. Ту је ипак улов! Употреба знака једнакости (=) пореди два низа, а не бројеве. Ако желите да упоредите бројеве, потребно је да користите оператор "-ек" слично ономе како смо користили "-гт" изнад.
Сада, направимо још једну измену:
ако тестира $ 1! = $ 2
Укључивање ускличника (!) Делује као "не" модификатор. То значи да покреће само следећу команду када се два низа не подударају.
Ево листе неких тестова заснованих на стринговима које можете да користите:
- стринг: користи само аргумент по себи тестира ли стринг није празан (нулл) или није дефинисан на неки начин
- -н стринг: ово ће тестирати ако стринг није празан и дефинисан
- -з стринг: ово ће тестирати да ли је стринг празан и дефинисан на тај начин
Вхат Елсе Абоут Иф?
Признајем, тај наслов је дефинитивно лоша игра. Добро, знамо како извршити наредбу ако је тест истинит, али шта ако желимо извршити другу наредбу ако је лажна? Лако можемо да их ставимо заједно додавањем одељка нашим изјавама "ако-онда" - "друго"!
иф ЦОНДИТИОН
онда
цомманд1
цомманд2
…
цоммандн
друго
цомманд1
цомманд2
…
цоммандн
фи
Хајде да саставимо једноставан сценарио.
Све је са одговарајућим удубљењем. Ако боље погледате, приметићете да смо користили квадратне заграде ([и]) уместо тест команде. Они су функционално еквивалентни за наше сврхе, и много је вјеројатније да ћете видјети квадратне заграде из различитих разлога, па ћемо их од сада користити.
Ево како ће изгледати:
Тако је лако!
Шта сада да радим?
Сада када знате како се користе изјаве "иф-тхен-елсе", можете покренути скрипте које могу извести тестове. На пример, можете покренути скрипту која ће израчунати мд5 хеш датотеке и затим је упоредити са оним који сте преузели у датотеку да бисте видели да ли се подударају.
За неке бонус бодове, можете креирати скрипту која има петљу "за", али користи тест услове уместо читања линија из датотеке листе ...
Приближавамо се неким занимљивијим деловима нашег Водича за почетнике за скриптирање. Ако сте пропустили претходне лекције, ево кратке листе коју можете да проверите:
- Основе скрипте љуске
- Коришћење за петље
- Више основних команди
- Које су разлике између Линук љуски?
- Како користити основне регуларне изразе
Ако сте направили или користили скрипте који користе услове тестирања, иф-тхен-елсе изјаве и "за" петље, поделите са нама доље у коментарима!