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. :)