Bash'te bir 'if' deyiminde iki dize değişkenini nasıl karşılaştırabilirim?

Bash]1'de (Ubuntu]2 kullanarak) bir `if' deyiminin çalışmasını sağlamaya çalışıyorum:

#!/bin/bash

s1="hi"
s2="hi"

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

ifdeyiminin çeşitli biçimlerini denedim,[["$s1" == "$s2"]], tırnaklı ve tırnaksız,=,==ve-eq` kullandım, ancak hala aşağıdaki hatayı alıyorum:

[merhaba: komut bulunamadı

Çeşitli sitelere ve eğitimlere baktım ve bunları kopyaladım, ancak çalışmıyor - neyi yanlış yapıyorum?

Sonunda, $s1 $s2 içeriyor mu demek istiyorum, peki bunu nasıl yapabilirim?

Sadece boşlukları hallettim... :/ Nasıl söylesem içerir?

Denedim.

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

ama işe yaramadı.

Boşluğa ihtiyacın var:

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

Ben öneririm:

#!/bin/bash

s1="hi"
s2="hi"

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

Çift tırnak olmadan ve sadece bir eşittir ile.

Yorumlar (3)

Şu anda bir linux kutusuna erişimim yok, ancak [ aslında bir program (ve bir bash yerleşik), bu yüzden [ ile ilk parametre arasına bir boşluk koymanız gerektiğini düşünüyorum.

Ayrıca dize eşitliği işlecinin tek bir = olduğuna dikkat edin

Yorumlar (1)