Provare a verificare che una stringa abbia solo lettere minuscole, maiuscole o numeri.Bash è necessario testare la stringa alfanumerica
if ! [[ "$TITLE" =~ ^[a-zA-Z0-9]+$ ]]; then echo "INVALID"; fi
Pensieri?
* AGGIORNAMENTO *
La variabile TITOLO attualmente ha solo testo in maiuscolo quindi dovrebbe passare e nulla deve essere emessa. Se tuttavia aggiungo un carattere speciale a TITLE, l'istruzione IF dovrebbe prenderlo ed echo INVALID. Attualmente non funziona. Fa sempre eco non valido. Penso che questo sia dovuto al fatto che la mia affermazione di regex è sbagliata. Penso al modo in cui l'ho scritto, alla ricerca di un titolo che contenga tutti e tre.
Bash 4.2.25
L'idea è, l'utente dovrebbe essere in grado di aggiungere qualsiasi titolo, purché contenga solo lettere maiuscole, minuscole o numeri. Tutti gli altri personaggi dovrebbero fallire.
* UPDATE *
Se TITLE = ThisIsAValidTitle che echos valido.
Se TITOLO = Questo è @@@@@@ InvalidTitle anche echo non valido.
* SOLUZIONE *
Strano, bene si inizia a lavorare quando ho semplificato si riduce a questo:
TEST="Valid0"
if ! [[ "$TEST" =~ [^a-zA-Z0-9] ]]; then
echo "VALID"
else
echo "INVALID"
fi
* vera soluzione *
mio variabile aveva spazi in esso ... DUH
Scusate per il disturbo ragazzi ...
* * soluzione finale
Questo spiega spazi nei titoli
if ! [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then
echo "VALID"
else
echo "INVALID"
fi
Qual è stato il risultato? Cosa ti aspettavi? –
Attualmente la variabile TITLE ha solo il testo in maiuscolo, quindi dovrebbe passare e nulla dovrebbe essere emesso. Se tuttavia aggiungo un carattere speciale a TITLE, l'istruzione IF dovrebbe prenderlo ed echo INVALID. Attualmente non funziona. Fa sempre eco non valido. Penso che questo sia dovuto al fatto che la mia affermazione di regex è sbagliata.Penso al modo in cui l'ho scritto, alla ricerca di un titolo che contenga tutti e tre. – Atomiklan
Sembra funzionare bene per me. Che versione di bash stai usando? –