Bash testkommando

Bash testkommando
I bash shell sammenligner testkommandoen et element mot et annet og returnerer sant eller usant. I bash -skripting er testkommandoen en integrert del av de betingede utsagnene som kontrollerer logikk og programflyt.

Denne guiden demonstrerer hvordan du bruker Bash Test -kommandoen.

Testkommando

Testkommandoen tar en UTTRYKK som et argument. Etter å ha beregnet uttrykket, returnerer testen en verdi til bashvariabelen “$?”. Hvis verdien er 0, var ekspresjonsevalueringen sann. Hvis verdien er 1, var ekspresjonsevalueringen falsk.

Det er to syntaks for bruk av testkommandoen.

$ testuttrykk
$ [Uttrykk]

Merk at når det gjelder “[“, er det et rom i begge ender av UTTRYKK.

Testbruk

Her er et kort eksempel på hvordan testkommandoen fungerer. Vi sjekker om 1 tilsvarer 2. Hvis sant, vil utgangen være "sann". Ellers vil utgangen være "falsk".

$ test 1 -eq 2 && Echo “True” || ekko “falsk”

La oss bryte det ned.

  • Test: Testkommandoen.
  • 1: det første elementet for sammenligning.
  • -EQ: Sammenligningsmetode (om verdiene er like).
  • 2: Det andre elementet for sammenligning.

Hvis testdelen er sann, vil den første Echo -kommandoen utføre. Ellers vil den andre Echo -kommandoen utføre.

Den samme kommandoen kan uttrykkes ved å bruke “[”.

$ [1 -eq 2] && Echo “True” || ekko “falsk”

Uttrykk

Uttrykket er det som gir testkommandoen sin sanne kraft. Testen kan bruke strenger, filer og heltall for sammenligning. Her er en rask liste over alle tilgjengelige testuttrykksformater.

Streng
I programmering er en streng et sett med tegn som vanligvis brukes til å representere tekst. For eksempel blir "Hello World" i følgende Echo -kommando behandlet som en streng.

$ ECHO “Hello World.”

Testkommandoen støtter følgende strenguttrykk.

  • -n: strenglengde er ikke-null.
  • -Z: Strenglengde er null.
  • : Strengverdi er ikke-null (quivalent til “-n”).
  • =: Både String_a og String_b er like.
  • !=: Strengene String_a og String_b er ikke like.

La oss prøve ut disse uttrykkene.

$ [-n “Hello World”] && Echo “True” || ekko “falsk”
$ [-z “Hello World”] && Echo “True” || ekko “falsk”
$ [“Hello World” != “Hello World”] && Echo “True” || ekko “falsk”
$ [“Hello World” = “Hello World”] && Echo “True” || ekko “falsk”

Heltall

Det aller første eksemplet i denne guiden demonstrerer heltallsammenligning. Det er flere måter å sammenligne heltall på.

  • -EQ: Integer_a er lik INTEGER_B.
  • -NE: Integer_a er ikke lik INTEGER_B
  • -GE: Integer_a er større enn eller lik INTEGER_B.
  • -GT: Integer_A er større enn Integer_B.
  • -LE: Integer_a er mindre enn eller lik INTEGER_B.
  • -LT: Integer_A er mindre enn Integer_B.

La oss sette disse uttrykkene i verk.

$ [5 -eq 10] && Echo “True” || ekko “falsk”
$ [5 -GT 2] && Echo “True” || ekko “falsk”
$ [4 -LE 5] && ECHO “True” || ekko “falsk”

Fil

Filer kan også være en del av uttrykket. Her er listen over støttede filuttrykk.

  • -EF: Både file_a og file_b har lignende enhets- og inodnummer. Hvis det er sant, betyr det at filene mest sannsynlig er symlinkert. Lær mer om Linux symbolske lenker.
  • -NT: Når det gjelder modifiseringsdato, er file_a nyere enn file_b.
  • -OT: file_a er eldre enn file_b.

Resten av de støttede filuttrykkene er relatert til en enkelt egenskap til en enkelt fil.

  • -e: file_a eksisterer.
  • -f: file_a eksisterer og en vanlig fil.
  • -d: file_a eksisterer og er en katalog.
  • -r: file_a eksisterer med lesetillatelser.
  • -W: File_a eksisterer med skrivetillatelser.
  • -x: file_a eksisterer med utførelser.
  • -S: File_a eksisterer og filstørrelsen er større enn null.
  • -O: file_a eksisterer og eieren er effektiv bruker -ID.
  • -G: file_a eksisterer og eieren er effektiv gruppe -ID.
  • -H: File_a eksisterer, og det er en symbolsk lenke.
  • -L: File_a eksisterer, og det er en symbolsk lenke.
  • -B: File_a eksisterer. Det er en blokkeringsspesialfil.
  • -C: File_a eksisterer. Det er en karakterspesialfil.
  • -S: File_a eksisterer. Det er en stikkontakt.

La oss se på noen eksempler.

$ [-x/usr/bin/bash] && ekko $?
$ [-s /bin /bash] && ekko $?
$ [-r /bin] && ekko $?
$ [-e /hello_world] && ekko "true" || ekko "falsk"

Implementering av test i bash -skript

Så langt har vi demonstrert hvordan du bruker testkommandoen for å avgjøre om en viss tilstand er sann eller falsk. Vi kan implementere dette i bash -skript for å ta nyttige beslutninger.

Ta en titt på følgende korte skript.

#!/bin/bash
if [$ (whoami) = root]; deretter
ekko “rot”
ellers
ekko "ikke rot"
fi

Her vil IF -uttalelsen sjekke om tilstanden er sann eller falsk. Ved hjelp av testkommandoen kan vi enkelt få den boolske verdien.

Kjør manuset med og uten rotprivilegium.

$ ./dummy.sh
$ sudo ./dummy.sh

Det er en enkel if-ests-uttalelse demonstrasjon. Sjekk gjerne Bash If-Else-uttalelser for ytterligere dyptgående applikasjoner.

Siste tanker

Testkommandoen er enkel, men kraftig. Denne guiden forklarer og demonstrerer forskjellige måter å bruke testen. Den komplette listen over alle de støttede uttrykkene er tilgjengelig på Man -siden.

$ mann test

Glad databehandling!