Unix / Linux - Esempio di operatori di stringa di shell

I seguenti operatori di stringa sono supportati da Bourne Shell.

Assumi variabile a contiene "abc" e variabile b tiene "efg" quindi -

Operatore Descrizione Esempio
= Controlla se il valore di due operandi è uguale o meno; se sì, la condizione diventa vera. [$ a = $ b] non è vero.
!= Controlla se il valore di due operandi è uguale o meno; se i valori non sono uguali, la condizione diventa vera. [$ a! = $ b] è vero.
-z Controlla se la dimensione dell'operando stringa data è zero; se è di lunghezza zero, restituisce vero. [-z $ a] non è vero.
-n Controlla se la dimensione dell'operando stringa data è diversa da zero; se è una lunghezza diversa da zero, restituisce true. [-n $ a] non è falso.
str Controlla se strnon è la stringa vuota; se è vuoto, restituisce false. [$ a] non è falso.

Esempio

Ecco un esempio che utilizza tutti gli operatori di stringa:

#!/bin/sh

a="abc"
b="efg"

if [ $a = $b ]
then
   echo "$a = $b : a is equal to b"
else
   echo "$a = $b: a is not equal to b"
fi

if [ $a != $b ]
then
   echo "$a != $b : a is not equal to b"
else
   echo "$a != $b: a is equal to b"
fi

if [ -z $a ]
then
   echo "-z $a : string length is zero"
else
   echo "-z $a : string length is not zero"
fi

if [ -n $a ]
then
   echo "-n $a : string length is not zero"
else
   echo "-n $a : string length is zero"
fi

if [ $a ]
then
   echo "$a : string is not empty"
else
   echo "$a : string is empty"
fi

Lo script sopra genererà il seguente risultato:

abc = efg: a is not equal to b
abc != efg : a is not equal to b
-z abc : string length is not zero
-n abc : string length is not zero
abc : string is not empty

I seguenti punti devono essere considerati durante l'utilizzo dell'operatore:

  • Devono essere presenti degli spazi tra gli operatori e le espressioni. Ad esempio, 2 + 2 non è corretto. Dovrebbe essere scritto come 2 + 2.

  • if...then...else...fi dichiarazione è una dichiarazione decisionale che è stata spiegata nel prossimo capitolo.

unix-basic-operators.htm