Iesācēja rokasgrāmata par čaulas skriptu 4 Nosacījumi un paziņojumi par to
Mēs esam guvuši pietiekamu pamatu mūsu rokasgrāmatā par čaulu skriptiem, kas jums jūtas ērti eksperimentējot. Šīs nedēļas maksājumā mēs risināsim dažus jautrākus, piemēram, nosacījumus un "tad, kad" paziņojumus.
Kas ir nosacījumi?
Ikdienas valodā mēs sakām, ka nosacījumi ir prasības, kas jāievēro, lai kaut kas notiktu. Lai mans klēpjdators varētu izveidot savienojumu ar internetu, ir jāizpilda vairāki nosacījumi, piemēram, ISP, modema un / vai maršrutētāja ieslēgšana, klēpjdators ir ieslēgts utt. no šīm prasībām nav izpildīts, rezultāts - mans klēpjdators, kas savieno internetu, nenotiek.
Līdzīgi ir nosacījumi skaitļošanas jomā. Mēs varam pārbaudīt, vai virkne atbilst citai virknei, vai tā neatbilst citai virknei, vai pat tad, ja tā vispār pastāv. Līdzīgi, mēs varam pārbaudīt skaitliskus argumentus, lai redzētu, vai kāds ir liels nekā, mazāks vai vienāds ar citu. Lai pēc tam, kad ir izpildīti testa nosacījumi, kaut kas notiek, mēs izmantojam “if-tad” paziņojumus. To formāts ir diezgan vienkāršs.
ja nosacījums
tad
komanda1
komandu2
…
komandēt
fi
Ja paziņojumi
Izpildīsim ātru mazu testa skriptu, vai mēs?
ja pārbaudi $ 1 -gt $ 2
tad
atbalss “$ 1 ir lielāks par $ 2”
fi
Jūs pamanīsiet, ka tikai tad, kad šis nosacījums ir pareizs, skripts izpildīs šādu komandu. Pretējā gadījumā iziet no “if” paziņojuma. Ja pēc “if” paziņojuma ir kādas komandas, tad tās darbosies kā parasti. Lai ilustrētu šo aprakstu, mūsu iepriekš minētā skripta beigās pievienoju šādu rindiņu:
atbalss „Tas nāk pēc tam, kad paziņojums”
Šeit ir daži citi skaitliski operatori, kurus vēlaties izmēģināt:
- -ekv: vienāds ar
- -ne: nav vienāds ar
- -lt: mazāk nekā
- -le: mazāks vai vienāds ar
- -gt: lielāks par
- -ģ: lielāks vai vienāds ar
Stringu testēšana
Tagad, ja mēs modificēsim mūsu skripta pirmo rindu, tas ir:
ja tests ir $ 1 = $ 2
tad nosacījums pārbaudīs, vai abas ir vienādas. Šeit ir arī nozveja! Vienādojuma zīmes (=) izmantošana salīdzina divas virknes, nevis skaitļus. Ja vēlaties salīdzināt numurus, jums vajadzētu izmantot „-eq” operatoru līdzīgi kā mēs izmantojām “-gt” iepriekš.
Tagad izdarīsim vēl vienu modifikāciju:
ja tests ir $ 1! = $ 2
Izsaukuma (!) Iekļaušana darbojas kā “ne” modifikators. Tas nozīmē, ka tā izpilda tikai šādu komandu, ja abas virknes neatbilst.
Tālāk ir sniegts saraksts ar vairākiem virknes testiem, kurus varat izmantot:
- string: izmantojot tikai vienu argumentu, pārbauda, vai virkne nav tukša (null) vai nav definēta kādā veidā
- -n string: tas pārbaudīs, vai virkne nav tukša un ir definēta
- -z string: tas pārbaudīs, vai virkne ir tukša un tiek definēta šādā veidā
Kas vēl par If?
Es atzīšu, ka šīs sadaļas nosaukums noteikti bija slikts. Labi, mēs zinām, kā izpildīt komandu, ja tests ir taisnība, bet kas notiks, ja mēs vēlamies izpildīt citu komandu, ja tā ir nepatiesa? Mēs varam viegli ievietot abus kopā, pievienojot sadaļu mūsu “if-then” paziņojumiem - „cits”!
ja nosacījums
tad
komanda1
komandu2
…
komandēt
cits
komanda1
komandu2
…
komandēt
fi
Veidosim vienkāršu skriptu.
Viss ir ar pareizu ievilkumu. Ja jūs uzmanīgi paskatīsieties, pamanīsiet, ka testa komandas vietā mēs izmantojām kvadrātiekavas ([un]). Viņi funkcionāli ir līdzvērtīgi mūsu mērķiem, un jūs, visticamāk, dažādu iemeslu dēļ redzēsiet kvadrātiekavas, tāpēc mēs tos turpmāk izmantosim.
Lūk, kā izskatīsies izeja:
Tas ir tik vienkārši!
Ko man darīt tagad?
Tagad, kad jūs zināt, kā lietot "if-then-else" paziņojumus, varat palaist skriptus, kas var veikt pārbaudes. Piemēram, varat palaist skriptu, kas aprēķinās faila md5 hash un pēc tam salīdzinās to ar failu, ko lejupielādējāt failā, lai redzētu, vai tie atbilst.
Dažiem bonusa punktiem jūs varat izveidot skriptu, kuram ir “for” cilpa, bet izmanto pārbaudes nosacījumus, nevis lasīt rindas no saraksta faila…
Mēs nonākam pie dažām interesantākajām daļām mūsu iesācēja rokasgrāmatā par Shell Scripting. Ja esat nokavējis iepriekšējās nodarbības, šeit ir ātrs saraksts, lai jūs varētu pārbaudīt:
- Shell skriptu pamati
- Izmantojot cilpas
- Vairāk pamata komandu
- Kādas ir atšķirības starp Linux čaulām?
- Kā lietot pamata regulāras izteiksmes
Ja esat izveidojis vai lietojis skriptus, kas izmanto testēšanas nosacījumus, ja, tad citādi, un “par” cilpām, dalieties ar mums komentāros!