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) conregexun'espressione regolare sul lato destro del giudizio. Un'espressione regolare nella sua forma più semplice viene trasmessa come'[0-9][0-9]'