¿Cómo comparo dos variables de cadena en una declaración 'si' en Bash? [duplicar]
Estoy intentando que una if
declaración funcione en Bash (usando Ubuntu ):
#!/bin/bash
s1="hi"
s2="hi"
if ["$s1" == "$s2"]
then
echo match
fi
Probé varias formas de declaración if
, usando [["$s1" == "$s2"]]
, con y sin comillas, usando =
y , pero sigo recibiendo el siguiente error:==
-eq
[hola: comando no encontrado
Miré varios sitios y tutoriales y los copié, pero no funciona. ¿Qué estoy haciendo mal?
Finalmente, quiero decir si $s1
contiene $s2
, entonces, ¿cómo puedo hacerlo?
Acabo de calcular los espacios... :/ ¿Cómo digo que contiene ?
Lo intenté
if [[ "$s1" == "*$s2*" ]]
pero no funcionó.
Para comparar la igualdad de cadenas, utilice:
if [[ "$s1" == "$s2" ]]
Para que la cadena NO sea igual a la comparación, use:
if [[ "$s1" != "$s2" ]]
Para los a
contenidos b
, utilice:
if [[ $s1 == *"$s2"* ]]
(y asegúrese de agregar espacios entre los símbolos):
Malo:
if [["$s1" == "$s2"]]
Bien:
if [[ "$s1" == "$s2" ]]
Debes tener cuidado de dejar un espacio entre el signo de '[' y las comillas dobles donde la variable contiene esto:
if [ "$s1" == "$s2" ]; then
# ^ ^ ^ ^
echo match
fi
Las ^
s muestran los espacios en blanco que debes dejar.
Necesitas espacios:
if [ "$s1" == "$s2" ]
Te sugiero este:
if [ "$a" = "$b" ]
Observe el espacio en blanco entre los corchetes de apertura/cierre y las variables y también los espacios en blanco que envuelven el signo '=".
Además, tenga cuidado con el encabezado de su script. No es lo mismo si usas
#!/bin/bash
o
#!/bin/sh
Aquí está la fuente .