Comment comparer deux variables de type chaîne dans une instruction "if" en Bash ?

J'essaie de faire fonctionner une instruction "if" dans [Bash][1] (avec [Ubuntu][2]) :

#!/bin/bash

s1="hi"
s2="hi"

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

J'ai essayé plusieurs formes de l'instruction if, en utilisant [["$s1&quot ; == "$s2&quot ;]], avec et sans guillemets, en utilisant =, == et -eq, mais j'obtiens toujours l'erreur suivante :

[hi : command not found

J&#8217ai consulté divers sites et tutoriels et les ai copiés, mais cela ne fonctionne pas. Qu&#8217est-ce que je fais de travers ?

En fin de compte, je veux dire si $s1 contient $s2, alors comment puis-je le faire ?

Je viens juste de travailler sur la partie espaces... :/ Comment dois-je dire contient ?

J'ai essayé

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

mais ça n'a pas marché.

[1] : http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29 [2] : http://en.wikipedia.org/wiki/Ubuntu_%28operating_system%29

Vous avez besoin d'espaces :

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

Je le suggère :

#!/bin/bash

s1="hi"
s2="hi"

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

Sans les guillemets et avec un seul égal.

Commentaires (3)

Je n'ai pas accès à une boîte linux pour le moment, mais [ est en fait un programme (et un buildin bash), donc je pense que vous devez mettre un espace entre [ et le premier paramètre.

Notez également que l'opérateur d'égalité des chaînes de caractères semble être un simple =.

Commentaires (1)