Die toets opdrag kan op die Linux-opdraglyn gebruik word om een element teen 'n ander te vergelyk, maar dit word meer algemeen in BASH-skripskripsies gebruik as deel van voorwaardelike stellings wat logika en programvloei beheer.
'N Basiese voorbeeld
U kan hierdie opdragte probeer deur bloot 'n terminale venster oop te maak .
toets 1-eq 2 & & echo "ja" || echo "nee"
Bogenoemde opdrag kan soos volg afgebreek word:
- toets - dit beteken dat jy op die punt staan om 'n vergelyking uit te voer
- 1 - die eerste element wat jy gaan vergelyk
- -Eq (hoe vergelyk jy, in hierdie geval toets jy of een nommer 'n ander is)
- 2 - die element waarmee jy die eerste element weer vergelyk
- && - Begin die volgende stelling as die resultaat waar is
- eggo "ja" - die opdrag om te hardloop as die vergelyking waar word
- || - Begin die volgende stelling as die resultaat vals is
- echo "nee" - die opdrag om te hardloop as die vergelyking valse terugkom
In wese is die opdrag vergelyk 1 tot 2 en hulle stem ooreen met die echo "ja" stelling word uitgevoer wat "ja" vertoon en as hulle nie ooreenstem met die echo word "nee" stelling uitgevoer wat "nee" vertoon.
Vergelyking van getalle
As u elemente vergelyk wat as nommers ontleed word, kan u die volgende vergelykingsoperateurs gebruik:
- -eq - doen waarde 1 gelyke waarde 2
- -ge - is waarde 1 groter of gelyk aan waarde 2
- -gt - is waarde 1 groter as waarde 2
- -le - is waarde 1 minder as of gelyk aan waarde 2
- -lt - is waarde 1 minder as waarde 2
- -ne - doen waarde 1 nie gelyk aan waarde nie 2
voorbeelde:
toets 1-eq 2 & & echo "ja" || echo "nee"
(vertoon "nee" na die skerm omdat 1 nie gelyk is nie 2)
toets 1-gaan 2 & & echo "ja" || echo "nee"
(vertoon "nee" na die skerm omdat 1 nie groter of gelyk is aan 2 nie)
toets 1 -gt 2 & & echo "yes" || echo "nee"
(vertoon "nee" na die skerm omdat 1 nie groter is as 2 nie)
toets 1-le 2 & & echo "ja" | echo "nee"
(vertoon "ja" op die skerm omdat 1 minder of gelyk is aan 2)
toets 1-lt 2 & & echo "ja" || echo "nee"
(vertoon "ja" op die skerm omdat 1 minder of gelyk is aan 2)
toets 1 -ne 2 & & echo "ja" || echo "nee"
(vertoon "ja" op die skerm omdat 1 nie gelyk is nie 2)
Vergelyking van teks
As u elemente vergelyk wat as stringe ontleed, kan u die volgende vergelykingoperateurs gebruik:
- = - word string 1 ooreenstem met string 2
- ! = - is snaar 1 anders as snaar 2
- -n - is die snaarlengte groter as 0
- -z - is die snaarlengte 0
voorbeelde:
toets "string1" = "string2" && echo "yes" || echo "nee"
(vertoon "nee" na die skerm omdat "string1" nie gelyk is aan "string2" nie)
toets "string1"! = "string2" && echo "yes" || echo "nee"
(vertoon "ja" op die skerm omdat "string1" nie gelyk is aan "string2" nie)
toets -n "string1" & & echo "ja" || echo "nee"
(vertoon "ja" op die skerm omdat "string1" 'n stringlengte groter as nul het)
toets -z "string1" & & echo "ja" || echo "nee"
(vertoon "nee" na die skerm omdat "string1" 'n snaarlengte groter as nul het)
Vergelyking van lêers
As u lêers vergelyk, kan u die volgende vergelykingoperateurs gebruik:
- -ef - Het die lêers dieselfde toestel en inode nommers (is hulle dieselfde lêer)
- -nt - Is die eerste lêer nuwer as die tweede lêer
- -ot - Is die eerste lêer ouer as die tweede lêer
- -b - Die lêer bestaan en is blok spesiaal
- -c - Die lêer bestaan en is karakter spesiaal
- -d - Die lêer bestaan en is 'n gids
- -e - Die lêer bestaan
- -f - Die lêer bestaan en is 'n gereelde lêer
- -g - Die lêer bestaan en het die gespesifiseerde groepnommer
- -G - Die lêer bestaan en eienaar deur die gebruiker se groep
- -h - Die lêer bestaan en is ' n simboliese skakel
- -k - Die lêer bestaan en het sy taai bietjie stel
- -L - Dieselfde as -h
- -O - Die lêer bestaan dat jy die eienaar is
- -p - Die lêer bestaan en is 'n genoemde pyp
- -r - Die lêer bestaan en is leesbaar
- -s - Die lêer bestaan en het 'n grootte groter as nul
- -S - Die lêer bestaan en is 'n sok
- -t - Die lêerbeskrywer word geopen op 'n terminaal
- -u - Die lêer bestaan en die set-user-id-bis is ingestel
- -w - Die lêer bestaan en is geskryf
- -x - Die lêer bestaan en is uitvoerbaar
voorbeelde:
toets / pad / na / lêer1 -n / pad / na / lêer2 & & echo "ja"
(As file1 nuwer is as file2 dan sal die woord "ja" vertoon word)
toets -e / pad / na / lêer1 & & echo "ja"
(as lêer1 bestaan, sal die woord "ja" vertoon word)
toets -O / pad / na / lêer1 & & echo "ja"
(as u eie lêer1 het, word die woord "ja" vertoon)
terminologie
- Blok spesiaal - Die lêer is 'n bloktoestel wat beteken dat data in blokke van grepe gelees word. Dit is gewoonlik toestel lêers soos hardeskywe.
- Karakter spesiaal - Die lêer word onmiddellik opgetree wanneer jy daaraan skryf en is gewoonlik 'n toestel soos 'n seriële poort
Vergelyking van verskeie voorwaardes
Tot dusver het alles een ding vergelyk met 'n ander, maar wat as jy twee toestande wil vergelyk.
Byvoorbeeld, as 'n dier 4 bene het en "moo" gaan, is dit waarskynlik 'n koei. Om eenvoudig te kyk vir 4 bene waarborg nie dat jy 'n koei het nie, maar om die klank wat dit sekerlik doen, te monitor.
Om beide toestande gelyktydig te toets, gebruik die volgende stelling:
toets 4-eq 4 -a "moo" = "moo" & & echo "dit is 'n koei" || eggo "dit is nie 'n koei nie"
Die belangrikste deel hier is die -a wat staan vir en.
Daar is 'n beter en meer algemeen gebruikte manier om dieselfde toets te doen en dit is soos volg:
toets 4-eq 4 & & toets "moo" = "moo" & & echo "dit is 'n koei" | eggo "dit is nie 'n koei nie"
Nog 'n toets wat jy dalk wil maak, is om twee stellings te vergelyk, en as een van die waardes is, is dit 'n tou. As u byvoorbeeld wil kontroleer of daar 'n lêer met die naam "file1.txt" bestaan of 'n lêer genaamd "file1.doc" bestaan, kan u die volgende opdrag gebruik
toets -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 bestaan nie"
Die belangrikste deel hier is die -of wat staan vir of.
Daar is 'n beter en meer algemeen gebruikte manier om dieselfde toets te doen en dit is soos volg:
toets -e file1.txt || toets -e file1.doc && echo "file1 exists" || echo "file1 bestaan nie"
Die Toets Sleutelwoord Elimineer
Jy hoef nie die woordtoets te gebruik om die vergelyking uit te voer nie. Al wat jy hoef te doen is om die stelling in vierkantige hakies soos volg in te sluit:
[-e file1.txt] && echo "lêer1 bestaan" || echo "file1 bestaan nie"
Die [en] beteken basies dieselfde as toets.
Nou weet jy dit kan jy verbeter as jy veelvuldige toestande vergelyk soos volg:
[4-e 4] && ["moo" = "moo"] & & echo "dit is 'n koei" | eggo "dit is nie 'n koei nie"
[-e file1.txt] | | [-e file1.doc] && echo "file1 exists" | echo "file1 bestaan nie"
opsomming
Die toets opdrag is nuttiger in skrifte omdat jy die waarde van een veranderlike teen 'n ander kan toets en die programprogram vloei. Op die standaard opdrag reël kan u dit gebruik om te toets of 'n lêer bestaan of