Guía para principiantes a BASH: comparación de cousas

01 de 08

Guía para principiantes a BASH: comparación de cousas

Tutorial BASH - Comparación de cadeas.

Na parte anterior do tutorial BASH miramos as declaracións condicionais .

Esa guía foi moi longa pero realmente só mostrou como controlar o fluxo da lóxica. Esta guía amosa as diferentes formas de comparar variables.

A imaxe de arriba mostra o primeiro exemplo da guía desta semana:

#! / bin / bash

name1 = "gary"
name2 = "bob"

se ["$ name1" = "$ name2"]
entón
eco "os nomes coinciden"
outra cousa
eco "os nomes non coinciden"
fi


No guión anterior definíronse dúas variables chamadas name1 e name2 e asignoulles os valores "gary" e "bob". Como as variables están contidas entre comiñas son chamadas variables de cadea que se fan máis relevantes a medida que o tutorial continúa.

Todo o guión fai é comparar o valor de $ name1 e $ name2 e se combinan a saída da cadea "os nomes coinciden" e se non saen a cadea "os nomes non coinciden".

As comiñas en torno ás variables $ name1 e $ name2 son importantes porque se o valor de calquera deles non foi establecido, o script seguirá funcionando.

Por exemplo se o nome $ 1 nunca foi establecido, estaría comparando con "bob". Sen as comiñas quedarías con = "bob" o que falla claramente.

¡Tamén pode usar o parágrafo = = para definir non igual a como segue:

se ["$ name1"! = "$ name2"]

02 de 08

Guía de inicio para BASH: comparación de cadeas

Tutorial BASH - Comparación de cadeas.

No exemplo anterior, a proba compara as mesmas dúas cordas e pregunta a pregunta que vén antes de bob no alfabeto?

Claramente a resposta é non.

O script introduce o operador inferior (<). Como o operador menos que o tamén se usa para a redirección, hai que escapalo cunha barra (\) para que non signifique menos que por iso, no script anterior comparei "$ name1" \ <"$ name2".

O contrario de menos que é obviamente maior que. En vez de usar \ .

Por exemplo

se ["$ name1" \> "$ name2"]

03 de 08

Guía de inicio para BASH: comparación de cadeas

Tutorial BASH - Comparación de cadeas.

Se quere probar se unha variable ten un valor pode usar a seguinte proba:

se [-n $ name2]

No script de arriba probouse se $ name2 recibiu un valor e se non fose a mensaxe "Non hai bob, nunca apareceu un bob".

04 de 08

Guía de inicio para BASH: comparación de cadeas

Tutorial BASH - Comparación de cadeas.

Na última diapositiva cubrimos se se configurou unha variable ou non. Ás veces, aínda que se estableceu unha variable, pode que en realidade non teña un valor.

Por exemplo:

nome1 = ""

Para probar se unha variable ten un valor ou non (é dicir, ten unha lonxitude de cero) use -z como segue:

se [-z $ name1]

No guión anterior fixei $ name1 nunha cadea de lonxitude cero e compáralo usando -z. Se $ name1 é cero, a mensaxe "gary saíu á noite" amosarase.

05 de 08

Guía de inicio para BASH: comparación de números

Tutorial BASH: Comparando números.

Ata agora todas as comparacións foron para cordas. Que hai de comparar números?

O script anterior mostra un exemplo de comparación de dous números:

#! / bin / bash

a = 4
b = 5

se [$ a = $ b]
entón
eco "4 = 5"
outra cousa
echo "4 non equivale a 5"
fi

Para definir unha variable como un número simplemente configurala sen comiñas. Podes comparar os números cun sinal igual.

Non obstante, prefiro empregar o seguinte operador para comparar dous números:

Se [$ a -eq $ b]

06 de 08

Guía de inicio para BASH: comparación de números

Tutorial BASH: Comparando números.

Se desexa comparar se un número é inferior a outro pode usar o operador inferior (<). Do mesmo xeito que coas cadeas, hai que escapar do operador menos que cun slash. (\ <).

Unha mellor forma de comparar números é usar a seguinte notación:

Por exemplo:

se [$ a -lt $ b]

se [$ a -le $ b]

se [$ a -ge $ b]

se [$ a -gt $ b]

07 de 08

Guía de inicio para BASH: comparación de números

Tutorial BASH: Comparando números.

Finalmente, para esta guía, se quere probar se dous números son diferentes pode usar tanto ou menos que os operadores xuntos (<>) ou -ne do seguinte xeito:

se [$ a <> $ b]

se [$ a -ne $ b]

08 de 08

Guía de inicio para BASH - Operadores de comparación - Resumo

Se perdeches as tres primeiras partes desta guía, podes atopalas premendo nas seguintes ligazóns:

Na seguinte parte da guía estarei cubrindo aritmética.