Come posso confrontare due variabili stringa in una dichiarazione 'if' in Bash?

Sto cercando di far funzionare una dichiarazione if in Bash (usando Ubuntu):

#!/bin/bash

s1="hi"
s2="hi"

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

Ho provato varie forme dell'istruzione if, usando [["$s1" == "$s2"]], con e senza virgolette, usando =, == e -eq, ma ottengo ancora il seguente errore:

[ciao: comando non trovato

Ho guardato vari siti e tutorial e li ho copiati, ma non funziona - cosa sto facendo di sbagliato?

Alla fine, voglio dire se $s1 contiene $s2, quindi come posso farlo?

Ho appena risolto la parte degli spazi... :/ Come faccio a dire contiene?

Ho provato

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

ma non ha funzionato.

Avete bisogno di spazi:

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

Io suggerirei:

#!/bin/bash

s1="hi"
s2="hi"

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

Senza le doppie virgolette e con una sola uguale.

Commentari (3)

Non ho accesso a una scatola linux in questo momento, ma [ è in realtà un programma (e un bash builtin), quindi penso che tu debba mettere uno spazio tra [ e il primo parametro.

Nota anche che l'operatore di uguaglianza delle stringhe sembra essere un singolo =

Commentari (1)