Kaip palyginti du eilutės kintamuosius 'if' teiginyje "Bash"?

Bandau gauti if teiginį, kad jis veiktų Bash (naudojant Ubuntu):

#!/bin/bash

s1="hi"
s2="hi"

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

Išbandžiau įvairias if teiginio formas, naudodamas [["$s1" == "$s2"]], su kabutėmis ir be jų, naudodamas =, == ir -eq, bet vis tiek gaunu tokią klaidą:

[hi: komanda nerasta

Peržiūrėjau įvairias svetaines ir vadovėlius, nukopijavau juos, bet tai neveikia - ką darau ne taip?

Galiausiai noriu pasakyti, ar $s1 yra $s2, tad kaip tai padaryti?

Ką tik išsprendžiau tarpų dalį :/ Kaip pasakyti, kad yra?

Bandžiau

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

bet tai neveikė.

Jums reikia tarpų:

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

Siūlyčiau:

#!/bin/bash

s1="hi"
s2="hi"

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

Be dvigubų kabučių ir tik su vienu lygybės ženklu.

Komentarai (3)

Dabar neturiu prieigos prie linux dėžutės, bet [ iš tikrųjų yra programa (ir bash programa), todėl manau, kad tarp [ ir pirmojo parametro reikia dėti tarpą.

Taip pat atkreipkite dėmesį, kad eilutės lygybės operatorius, atrodo, yra vienas =

Komentarai (1)