Skrypty powłoki Bash #9 - A mnie czytać nie nauczyli.
Intro
Dzień dobry, dzień dobry.
Dzisiaj temat który, o zgrozo gdzieś zgubiłem.
Pewnie wypadł mi z teczki po drodze.
Już tę potknięcie nadrabiamy i o wczytywaniu informacji od użyszkodnia rozprawiamy.
Dobra dawaj Panie na szybkości.
Do pobrania od użytkownika danych wykorzystujemy komendę read
.
Komenda read
możemy uruchomić w kilku formach.
Forma ze zmienną specjalną.
echo "Podaj numer karty debetowej/kredytowej"
read
echo "Numer twojej karty to ${REPLY}"
Forma z przypisaniem do konkretnej zmiennej.
echo "Podaj PIN do karty: "
read pin
echo "Twój PIN to ${pin} i właśnie wyczyściliśmy ci konto :) "
Wężykiem Jasiu, wężykiem.
Jak zobaczyliście wyżej, używałem komendy read
poprzedzonej komendą echo
do wyświetlenia informacji, ale jest możliwość, by zrobić te dwie rzeczy w jednej komendzie.
Możemy uzyskać taki sam wynik, jak wyżej, korzystając z przełącznika -p
.
read -p "Uwierz mi, jestem afrykańskim księciem: " naKsieciunia
echo "metoda na afrykańskiego księcia dała wynik: ${naKsieciunia}"
Panie daj ta odpowiedź, bo mi się śpieszy.
Ciekawym przełącznikiem może się okazać również przełącznik -t
od timeout.
Przy określeniu ilości sekund, dla przykładu 10 (-t 10
) komenda read
będzie czekała na odpowiedź tylko 10s.
Możemy to wykorzystać np. do pytania, czy użytkownik skończył pracę i czy można zwolnić zarezerwowane zasoby.
Oczywiście, jeśli przekroczenie czasu żądania zostanie przekroczone, to komenda read
zakończy się z kodem błędu różnym od 0.
Można to wykorzystać do warunkowego przypisania wartości zmiennej, ale proponuję wykorzystać metody opisane w części 7 “Skrypty powłoki Bash #7 - o sznurkach” np. ${var:=value}
.
Zwijamy się.
Dziś bardzo króciutki post, na temat rzeczy, która miała być już dawno omówiona.
Komenda read
posiada jeszcze kilka przełączników, rzadko stosowanych, ale zawsze można się zapoznać z nimi pod man read
lub man builtins
.
Z ciekawych rzeczy, a może raczej zmiennych, zmienna IFS zmienia trochę zachowanie komendy read
, ale o niej podczas rozmowy o pętlach.
Epilog
Dziękuję za lekturę oraz życzę miłego dnia i smacznej kawusi. :)