Próba sprawdzenia, czy ciąg zawiera tylko małe litery, wielkie litery lub cyfry.Bash musi przetestować ciąg alfanumeryczny
if ! [[ "$TITLE" =~ ^[a-zA-Z0-9]+$ ]]; then echo "INVALID"; fi
Myśli?
* AKTUALIZACJA *
Zmienna TYTUŁ obecnie ma tylko dużymi literami tekst tak, to powinien przejść i nic nie powinno być wyprowadzane. Jeśli jednak dodaję znak specjalny do TITLE, instrukcja JEŻE powinna go przechwycić i wywołać NIEPRAWIDŁOWE. Obecnie to nie działa. Zawsze echa są nieważne. Myślę, że to dlatego, że moje wyrażenie regex jest błędne. Myślę, że tak napisałem, że szuka tytułu, który ma w sobie wszystkie trzy.
Bash 4.2.25
Chodzi o to, użytkownik powinien móc dodać dowolny tytuł tak długo, jak to zawiera tylko wielkie litery, małe litery lub cyfry. Wszystkie inne postacie powinny zawieść.
* AKTUALIZACJA *
Jeśli TYTUŁ = ThisIsAValidTitle to Echos nieprawidłowy.
Jeśli TITLE = ThisIs @@@@@@@ InvalidTitle echa są nieprawidłowe.
* ROZWIĄZANIE *
Weird, dobrze rozpoczął pracę kiedy uproszczone go do tego:
TEST="Valid0"
if ! [[ "$TEST" =~ [^a-zA-Z0-9] ]]; then
echo "VALID"
else
echo "INVALID"
fi
* rzeczywiste rozwiązanie *
Moja zmienna miała miejsca w nim ... DUH
Przepraszamy za problemy ...
* ROZWIĄZANIE końcowy *
Stanowi to przestrzenie w tytułach
if ! [[ "$TITLE" =~ [^a-zA-Z0-9\ ] ]]; then
echo "VALID"
else
echo "INVALID"
fi
Jaki był wynik? Czego się spodziewałeś? –
Zmienna TITLE ma obecnie tylko duże litery, więc powinna przejść i nic nie powinno być wyprowadzane. Jeśli jednak dodaję znak specjalny do TITLE, instrukcja JEŻE powinna go przechwycić i wywołać NIEPRAWIDŁOWE. Obecnie to nie działa. Zawsze echa są nieważne. Myślę, że to dlatego, że moje wyrażenie regex jest błędne.Myślę, że tak napisałem, że szuka tytułu, który ma w sobie wszystkie trzy. – Atomiklan
Wydaje się, że działa dobrze dla mnie. Z jakiej wersji bash korzystasz? –