string=123456
if [ $string == 123456 ]; then
echo 123
fi
Funziona bene, ma se cambio da == a = ~ ottengo questo errore:
./test: line 3: [: =~: binary operator expected
123456
è un RE valido
string=123456
if [ $string == 123456 ]; then
echo 123
fi
Funziona bene, ma se cambio da == a = ~ ottengo questo errore:
./test: line 3: [: =~: binary operator expected
123456
è un RE valido
Risposte:
Lacorrispondenza regex di Bash funziona solo tra parentesi quadre doppie[[ ... ]]
:
string=123456
if [[ "$string" =~ 123456 ]]; then echo 123; fi
123
[[ ... ]]
, poiché non si verifica alcuna divisione di parole o espansione di percorso. Sono necessari solo quando si utilizzano parentesi singole [ ... ]
(entrambi i lati) e sulla destra dell'espressione parentesi doppia.
=~
in questo caso è sbagliato.=~
confronta lo scalpiccio (lato sinistro del compito) conregex
un'espressione regolare sul lato destro del giudizio. Un'espressione regolare nella sua forma più semplice viene trasmessa come'[0-9][0-9]'