Steam Controller
Indholdsfortegnelse:
- Sammenligningsoperatører
- Kontroller, om en streng indeholder en underlag
- Kontroller, om en streng er tom
- Sammenligning af strenge med sagsoperatøren
- Lexikografisk sammenligning
- Konklusion
Når du skriver Bash-scripts, bliver du ofte nødt til at sammenligne to strenge for at kontrollere, om de er ens eller ikke. To strenge er ens, når de har samme længde og indeholder den samme rækkefølge af tegn.
Denne tutorial beskriver, hvordan man sammenligner strenge i Bash.
Sammenligningsoperatører
Sammenligningsoperatører er operatører, der sammenligner værdier og returnerer sandt eller forkert. Når du sammenligner strenge i Bash, kan du bruge følgende operatører:
-
string1 = string2
ogstring1 == string2
- Ligestillingsoperatøren returnerer sandt, hvis operanderne er lige.- Brug
=
operatoren medtest
; then echo "Strings are equal." else echo "Strings are not equal." fi
; then echo "Strings are equal." else echo "Strings are not equal." fi
Når scriptet udføres, udskrives det følgende output.
Strings are equal.
Her er et andet script, der tager input fra brugeren og sammenligner de givne strenge. I dette eksempel vil vi bruge
]; then echo "Strings are equal." else echo "Strings are not equal." fi
]; then echo "Strings are equal." else echo "Strings are not equal." fi
Kør scriptet, og indtast strengene, når du bliver bedt om det:
Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.
Du kan også bruge det logiske og
&&
og eller||
at sammenligne strenge:] && echo "Equal" || echo "Not equal"
Kontroller, om en streng indeholder en underlag
Der er flere måder at kontrollere, om en streng indeholder en substring.
Én fremgangsmåde er at bruge surround-substringen med stjerne-symboler
*
hvilket betyder at matche alle tegn.#!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi
Scriptet gentager følgende:
It's there.
En anden mulighed er at bruge regex operator
=~
som vist nedenfor:#!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi
Perioden efterfulgt af en stjerne
.*
Matcher nul eller flere forekommer et hvilket som helst tegn undtagen en newline-karakter.Kontroller, om en streng er tom
Ofte bliver du også nødt til at kontrollere, om en variabel er en tom streng eller ikke. Du kan gøre dette ved hjælp af operatørerne
-n
og-z
.#!/bin/bash VAR='' if]; then echo "String is empty." fi
String is empty.
#!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi
Sammenligning af strenge med sagsoperatøren
I stedet for at bruge testoperatørerne kan du også bruge sagsangivelsen til at sammenligne strenge:
#!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac
Lexikografisk sammenligning
Leksikografisk sammenligning er en handling, hvor to strenge sammenlignes alfabetisk ved at sammenligne tegnene i en streng sekventielt fra venstre til højre. Denne slags sammenligning bruges sjældent.
Følgende scripts sammenligner to strenge leksikografisk:
#!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi
Scriptet udsender følgende:
Ubuntu is lexicographically greater than Linuxize.
Konklusion
Sammenligning af streng er en af de mest basale og hyppigt anvendte operationer i Bash-scripting. Efter at have læst denne tutorial, skal du have en god forståelse af, hvordan man sammenligner strenge i Bash. Du kan også tjekke vores guide om strengkonsatenation.
bash terminal
- Brug
Hvordan man sammenligner to pdf-filer side om side ved hjælp af diffpdf

Lær, hvordan man sammenligner to PDF-filer side om side ved hjælp af DiffPDF.
Hvordan man sammenligner to dokumenter i ms word 2007 eller 2010

Lær, hvordan du hurtigt sammenligner to dokumenter i MS Word 2007 eller 2010.
Samsung Galaxy Note 3 vs note 2: hvordan sammenligner de hinanden?

Samsungs næste store ting er her. Interesseret i, hvordan Samsung Galaxy Note 3 sammenlignes med Note 2? Deltag i os, mens vi kigger efter!