If-Koubou

Iesācēju rokasgrāmata Shell Scripting 4: Nosacījumi un If-Tad paziņojumi

Iesācēju rokasgrāmata Shell Scripting 4: Nosacījumi un If-Tad paziņojumi (Kā)

Mēs esam pārņēmuši pietiekami daudz pamatu mūsu rokasgrāmatā par čaumalu skriptiem, kas jums vajadzētu justies ērti eksperimentēt. Šīs nedēļas iemaksā mēs pievērsīsimies dažiem jautrākajiem veidiem, piemēram, nosacījumiem un "if-then" paziņojumiem.

Kādi ir nosacījumi?

Ikdienas valodā mēs sakām, ka nosacījumi ir prasības, kas jāievēro, lai notiktu kaut kas. Manam klēpjdatoram, lai varētu izveidot savienojumu ar internetu, ir jāievēro vairāki nosacījumi, piemēram, ISP, modems un / vai maršrutētājs ir ieslēgts, mans klēpjdators ir ieslēgts utt. Tas ir diezgan vienkārši un, ja kāds no šīm prasībām nav izpildīts, rezultāts - mans klēpjdators, kas pieslēdzas internetam, nenotiek.

Apstākļi skaitļošanas darbā līdzīgi. Mēs varam pārbaudīt, vai virkne atbilst citai virknei, vai tā neatbilst citai virknei, vai pat ja tā vispār pastāv. Tāpat mēs varam pārbaudīt skaitliskos argumentus, lai noskaidrotu, vai viens ir lielisks, mazāk nekā vai vienāds ar citu. Lai kaut kas notiktu pēc tam, kad ir izpildīti pārbaudes nosacījumi, mēs izmantojam paziņojumus "if-then". Viņu formāts ir diezgan vienkāršs.

ja CONDITION
tad
komanda1
command2

komandēt
fi

Ja paziņojumi

Palaidīsim ātru mazu testa skriptu, vai mēs to darīsim?

ja tests ir $ 1 -gt $ 2
tad
echo "1 $ ir lielāks par 2 ASV dolāriem"
fi

Jūs ievērosiet, ka tikai tad, ja šis nosacījums ir taisnība, skripts izpildīs šādu komandu. Pretējā gadījumā paziņojums "if" tiks izlaists. Ja pēc paziņojuma "if" ir kādas komandas, tad tās tiks palaistas kā parasti. Lai to ilustrētu, mēs pievienojām mūsu rindkopas beigās šādu rindiņu:

echo "Tas nāk pēc" ja apgalvojums "

Tālāk ir minēti daži citi ciparu operatori, kurus jūs varat izmēģināt:

  • -eq: vienāds ar
  • -ne: nav vienāds ar
  • -lt: mazāks par
  • -le: mazāk vai vienāds ar
  • -gt: lielāks par
  • -ge: lielāks vai vienāds ar

Testēšanas virknes

Tagad, ja mēs pārveidosim mūsu skripta pirmo rindiņu par šo:

ja tests $ 1 = $ 2

tad nosacījums pārbaudīs, vai abi ir vienādi. Šeit ir nozvejas šeit! Vienāda zīme (=) salīdzina divas virknes, nevis ciparus. Ja vēlaties salīdzināt ciparus, jums ir jāizmanto "-eq" operators, līdzīgi kā mēs izmantojām "-gt" iepriekš.

Tagad pieņemsim vēl vienu modifikāciju:

ja tests $ 1! = $ 2

Izsaukuma punkta (!) Iekļaušana ir "nav" modifikators. Tas nozīmē, ka tā tikai izpilda šādu komandu, ja abas virknes nesakrīt.

Tālāk ir sniegts saraksts ar vairākiem virkņu testiem, kurus varat izmantot:

  • string: izmantojot tikai argumentus, testus izmanto, ja virkne nav tukša (nulle) vai kādā veidā nav definēta
  • -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 tādā veidā tiek definēta

Kas ir par inteli?

Es atzîsu, ka sadaïas virsraksts noteikti bija slikts sarkans. Labi, mēs zinām, kā izpildīt komandu, ja tests ir taisnība, bet kas notiek, ja mēs vēlamies izpildīt citu komandu, ja tā ir nepatiesa? Mēs varam viegli apvienot abus, pievienojot sadaļu mūsu "if-then" paziņojumiem - "cits"!

ja CONDITION
tad
komanda1
command2

komandēt
cits
komanda1
command2

komandēt
fi

Izveidosim vienkāršu skriptu.

Viss ir ar atbilstošu atkāpi. Ja paskatās uzmanīgi, jūs ievērosiet, ka mēs izmantojām kvadrātiekavas ([un]), nevis testa komandu. Tie ir funkcionāli līdzvērtīgi mūsu mērķiem, un jūs daudz vairāk redzēsiet kvadrātiekavas dažādu iemeslu dēļ, tāpēc mēs tos turpmāk izmantosim.

Lūk, kāda būs izlaide:

Tas ir tik vienkārši!

Ko es tagad daru?

Tagad, kad jūs zināt, kā izmantot "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īdzina to ar failu, kuru esat lejupielādējis failā, lai redzētu, vai tie atbilst.

Dažiem bonusa punktiem jūs varat izveidot skriptu, kuram ir cilpa "for", bet izmanto testa nosacījumus, nevis lasot līnijas no saraksta faila ...

Mēs iegūstam dažas no vēl interesantākajām daļām mūsu Iesācēju rokasgrāmatā par Shell Scripting. Ja jūs nokavējāt iepriekšējās nodarbības, šeit ir pieejams ātrs saraksts, kurā varat izbraukt:

  1. Shell Scripting pamati
  2. Izmantojot cilpām
  3. Vairāk pamata komandu
  4. Kādas ir atšķirības starp Linux apvalkiem?
  5. Kā lietot pamatregulas izteiksmes

Ja esat izveidojis vai izmantojis skriptus, kas izmanto testēšanas nosacījumus, paziņojumus "if-then-else" un "for", kopīgojiet ar mums komentārus!