¿Cómo puedo comparar dos variables de cadena en una sentencia 'if' en Bash?

Estoy intentando conseguir que una sentencia if funcione en Bash (usando Ubuntu):

#!/bin/bash

s1="hi"
s2="hi"

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

He probado varias formas de la sentencia if, usando [["$s1" == "$s2"]], con y sin comillas, usando =, == y -eq, pero sigo obteniendo el siguiente error:

[hi: command not found

He mirado en varios sitios y tutoriales y los he copiado, pero no funciona, ¿qué estoy haciendo mal?

Al final, quiero decir si $s1 contiene $s2, así que ¿cómo puedo hacer eso?

Acabo de resolver la parte de los espacios... :/ ¿Cómo digo "contiene"?

He intentado

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

pero no funcionó.

Necesitas espacios:

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

Yo sugeriría:

#!/bin/bash

s1="hi"
s2="hi"

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

Sin las comillas dobles y con una sola igualdad.

Comentarios (3)

No tengo acceso a una caja de linux ahora mismo, pero [ es en realidad un programa (y un builtin de bash), así que creo que tienes que poner un espacio entre [ y el primer parámetro.

También tenga en cuenta que el operador de igualdad de la cadena parece ser un solo =

Comentarios (1)