Πώς μπορώ να συγκρίνω δύο μεταβλητές συμβολοσειράς σε μια δήλωση 'if' στο Bash;

Προσπαθώ να κάνω μια δήλωση if να λειτουργήσει στο Bash (χρησιμοποιώντας Ubuntu):

#!/bin/bash

s1="hi"
s2="hi"

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

Έχω δοκιμάσει διάφορες μορφές της δήλωσης if, χρησιμοποιώντας [["$s1" == "$s2"]], με και χωρίς εισαγωγικά, χρησιμοποιώντας =, == και -eq, αλλά εξακολουθώ να λαμβάνω το ακόλουθο σφάλμα:

[hi: η εντολή δεν βρέθηκε

Έχω κοιτάξει διάφορες τοποθεσίες και σεμινάρια και τα έχω αντιγράψει, αλλά δεν λειτουργεί - τι κάνω λάθος;

Τελικά, θέλω να πω αν το $s1 περιέχει το $s2, οπότε πώς μπορώ να το κάνω αυτό;

Έκανα μόλις το κομμάτι με τα κενά... :/ Πώς μπορώ να πω περιέχει;

Δοκίμασα

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

αλλά δεν λειτούργησε.

Χρειάζεστε χώρους:

if [ "$s1" == "$s2" ]
Σχόλια (4)

Θα πρότεινα:

#!/bin/bash

s1="hi"
s2="hi"

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

Χωρίς τα διπλά εισαγωγικά και με ένα μόνο ισότιμο.

Σχόλια (3)

Δεν έχω πρόσβαση σε ένα linux box αυτή τη στιγμή, αλλά το [ είναι στην πραγματικότητα ένα πρόγραμμα (και ένα ενσωματωμένο bash), οπότε νομίζω ότι πρέπει να βάλετε ένα κενό μεταξύ του [ και της πρώτης παραμέτρου.

Σημειώστε επίσης ότι ο τελεστής ισότητας συμβολοσειρών φαίνεται να είναι ένα απλό =

Σχόλια (1)