Hoe vergelijk ik twee tekenreeksvariabelen in een 'if' statement in Bash?

Ik'm probeer een if statement werkend te krijgen in Bash (gebruik makend van Ubuntu):

#!/bin/bash

s1="hi"
s2="hi"

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

Ik'heb verschillende vormen van het if statement geprobeerd, met [["$s1" == "$s2"]], met en zonder aanhalingstekens, met =, == en -eq, maar ik krijg nog steeds de volgende foutmelding:

[hi: commando niet gevonden

Ik'heb op verschillende sites en tutorials gekeken en die gekopieerd, maar het werkt niet - wat doe ik verkeerd?

Uiteindelijk wil ik zeggen of $s1 $s2 bevat, dus hoe kan ik dat doen?

Ik heb net de spaties uitgewerkt... :/ Hoe zeg ik contains?

Ik heb het geprobeerd

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

maar het werkte niet.

Je hebt ruimtes nodig:

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

Ik stel voor:

#!/bin/bash

s1="hi"
s2="hi"

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

Zonder de dubbele aanhalingstekens en met slechts één gelijkheid.

Commentaren (3)

Ik heb nu geen toegang tot een Linux box, maar [ is eigenlijk een programma (en een bash builtin), dus ik denk dat je een spatie moet zetten tussen [ en de eerste parameter.

Merk ook op dat de stringgelijkheidsoperator een enkele = lijkt te zijn

Commentaren (1)