Hvordan sammenligner jeg to strengvariabler i en 'if' uttalelse i Bash?

Jeg prøver å få en if-setning til å fungere i Bash (ved hjelp av Ubuntu):

#!/bin/bash

s1="hi"
s2="hi"

if ["$s1" == "$s2"]
then
  echo match
fi

Jeg har prøvd forskjellige former for if-setningen, ved å bruke [["$s1" == "$s2"]], med og uten anførselstegn, ved å bruke =, == og -eq, men jeg får fortsatt følgende feil:

[hei: kommando ikke funnet

Jeg har sett på forskjellige nettsteder og veiledninger og kopiert disse, men det fungerer ikke - hva gjør jeg galt?

Til slutt vil jeg si om $s1 inneholder $s2, så hvordan kan jeg gjøre det?

Jeg trente bare mellomrommene litt ... :/ Hvordan sier jeg inneholder?

Jeg prøvde

if [[ "$s1" == "*$s2*" ]]

men det fungerte ikke.

Du trenger mellomrom:

if [ "$s1" == "$s2" ]
Kommentarer (4)

vil jeg foreslå:

#!/bin/bash

s1="hi"
s2="hi"

if [ $s1 = $s2 ]
then
  echo match
fi

Uten doble anførselstegn og med bare ett likhetstegn.

Kommentarer (3)

Jeg har ikke tilgang til en linux-boks akkurat nå, men [ er faktisk et program (og en bash innebygd), så jeg tror du må sette et mellomrom mellom [ og den første parameteren.

Legg også merke til at strenglikhetsoperatoren ser ut til å være en enkelt = =.

Kommentarer (1)