Skip to main content

Nybörjare Guide till BASH - Jämförande saker

Anonim
01 av 08

Nybörjare Guide till BASH - Jämförande saker

I den föregående delen av BASH-handledningen såg vi på villkorliga uttalanden.

Den guiden var väldigt lång men visade verkligen bara hur man kontrollerar flödet av logik. Den här guiden visar de olika sätten på vilka du kan jämföra variabler.

Ovanstående bild visar det första exemplet i veckans guide:

#! / Bin / bashname1 = "Gary"name2 = "bob"om "$ name1" = "$ name2"sedan eko "namnen matchar"annan echo "namnen matchar inte"fi

I ovanstående skript har jag definierat två variabler som heter name1 och name2 och tilldelade dem värdena "gary" och "bob". Eftersom variablerna finns mellan citattecken kallas de strängvariabler som blir mer relevanta när handledningen fortsätter.

Allt manuset gör är att jämföra värdet på $ name1 och $ name2 och om de matchar utdata strängen "namnen matchar" och om de inte skriver ut strängen "matchar namnen inte".

Citatmärkena runt $ name1 och $ name2-variablerna är viktiga eftersom om värdet av någon av dem inte har ställts in kommer skriptet fortfarande att fungera.

Till exempel om $ name1 aldrig var inställt så skulle du jämföra "" med "bob". Utan citattecken skulle du vara kvar med = "bob" som klart misslyckas.

Du kan också använda! = Notationen för att definiera inte lika med följande:

om "$ name1"! = "$ name2" 02 av 08

Nybörjarguide till BASH - Jämför strängar

I det ovanstående exemplet jämför testet samma två strängar och frågar frågan kommer gary före bob i alfabetet?

Klart är svaret nej.

Skriptet introducerar mindre än operatören (<). Eftersom den mindre än operatören också används för omdirigering måste du flytta den med ett snedstreck () för att det betyder mindre än det varför i skriptet ovan jämförde jag "$ name1" <"$ name2".

Det motsatta av mindre än är uppenbarligen större än. I stället för att använda <use >.

Till exempel

om "$ name1" > "$ name2" 03 av 08

Nybörjarguide till BASH - Jämför strängar

Om du vill testa om en variabel har ett värde kan du använda följande test:

om -n $ name2

I skriptet ovan har jag testat om $ name2 har fått ett värde och om det inte är meddelandet "Det finns ingen bob, det fanns aldrig en bob".

04 av 08

Nybörjarguide till BASH - Jämför strängar

På den förra bilden vi täckte om en variabel har ställts in eller inte. Ibland kan en variabel ha ställts in men det kanske inte har ett värde.

Till exempel:

name1 = ""

För att testa om en variabel har ett värde eller inte (dvs har en längd av noll) använd -z enligt följande:

om -z $ name1

I det ovanstående skriptet har jag satt $ name1 till en sträng med noll längd och jämför sedan den med -z. Om $ name1 är noll i längden visas meddelandet "gary har gått ut på kvällen" visas.

05 av 08

Nybörjarhandbok för BASH - Jämför antal

Hittills har alla jämförelser varit för strängar. Vad sägs om att jämföra siffror?

Ovanstående skript visar ett exempel på att jämföra två siffror:

#! / Bin / basha = 4b = 5om $ a = $ bsedan eko "4 = 5"annan eko "4 motsvarar inte 5"fi

För att ställa in en variabel för att vara ett tal, sätt det helt enkelt utan citattecken. Du kan sedan jämföra siffrorna med ett lika tecken.

Jag föredrar dock följande operatör att jämföra två nummer:

Om $ a-eq $ b 06 av 08

Nybörjarhandbok för BASH - Jämför antal

Om du vill jämföra huruvida ett tal är mindre än ett annat nummer kan du använda mindre än operatören (<). Som med strängar måste du fly den mindre än operatören med ett snedstreck. ( <).

Ett bättre sätt att jämföra siffror är att använda följande notering istället:

  • Mindre än -lt
  • Mindre än eller lika med -le
  • Större än -gt
  • Större än eller lika med -ge

Till exempel:

om $ a -lt $ bom $ a -le $ bom $ a -ge $ bom $ a -gt $ b 07 av 08

Nybörjarhandbok för BASH - Jämför antal

Slutligen för denna guide, om du vill testa om två siffror är olika kan du använda antingen mindre än och större än operatörer tillsammans (<>) eller -ne enligt följande:

om $ a <> $ bom $ a -ne $ b 08 av 08

Nybörjarhandbok till BASH - Jämförelseoperatörer - Sammanfattning

Om du har missat de första tre delarna av den här guiden kan du hitta dem genom att klicka på följande länkar:

  • Hej världen
  • Ingångsparametrar
  • Villkor och variabler

I nästa del av guiden kommer jag att täcka aritmetiska.