Kā es varu salīdzināt divus virknes mainīgos ar 'if' paziņojumu Bash?

Es mēģinu iegūt if paziņojumu, lai strādātu Bash (izmantojot Ubuntu):

#!/bin/bash

s1="hi"
s2="hi"

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

Esmu izmēģinājis dažādas if izteikuma formas, izmantojot [[["$s1" == "$s2"]], ar un bez pēdiņām, izmantojot =, == un -eq, bet man joprojām parādās šāda kļūda:

[hi: komanda nav atrasta

Es apskatīju dažādas vietnes un pamācības un nokopēju tās, bet tas nedarbojas - ko es daru nepareizi?

Galu galā es gribu pateikt, vai $s1 satur $s2, kā to izdarīt?

Es tikko izdomāju atstarpes... :/ Kā es varu pateikt satur?

Es mēģināju

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

bet tas nedarbojās.

Jums ir nepieciešamas atstarpes:

if [ "$s1" == "$s2" ]
Komentāri (4)

Es ieteiktu:

#!/bin/bash

s1="hi"
s2="hi"

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

Bez dubultajām pēdiņām un tikai ar vienu vienādojumu.

Komentāri (3)

Man šobrīd nav piekļuves linux box, bet [ faktiski ir programma (un bash builtin), tāpēc es domāju, ka starp [ un pirmo parametru ir jāieliek atstarpe.

Tāpat ņemiet vērā, ka virknes vienlīdzības operators, šķiet, ir viens =

Komentāri (1)