Menu
Coddy logo textTech

Dane wejściowe od użytkownika w skryptach

Część sekcji Podstawy ścieżki Terminal w Coddy. Lekcja 69 z 82.

Zmienne są przydatne, ale czasami chcesz, aby Twój skrypt pytał użytkownika o informacje podczas działania. Polecenie read wstrzymuje skrypt i czeka, aż użytkownik coś wpisze, a następnie zapisuje te dane wejściowe w zmiennej.

Oto jak to działa:

#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"

Po uruchomieniu ten skrypt wyświetla pytanie, czeka, aż użytkownik wpisze swoje imię i naciśnie Enter, a następnie wita go. Polecenie read pobiera wszystko, co wpisze użytkownik, i zapisuje to w zmiennej name.

Możesz uprościć prompt, używając flagi -p, która łączy komunikat promptu i dane wejściowe w tym samym wierszu:

#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"

Wyświetla Enter your name: i czeka na dane wejściowe w tym samym wierszu, co wygląda bardziej estetycznie. Flaga -p przyjmuje tekst podpowiedzi jako argument, po którym następuje nazwa zmiennej, w której zostaną zapisane dane wejściowe.

Dane wejściowe użytkownika sprawiają, że skrypty są interaktywne i elastyczne. Zamiast wpisywać wartości na stałe, możesz napisać jeden skrypt, który działa inaczej w zależności od tego, co użytkownik podaje za każdym razem, gdy go uruchamia.

challenge icon

Wyzwanie

Łatwy

Utwórz skrypt powłoki o nazwie greeter.sh, który pyta użytkownika o jego ulubiony kolor, a następnie wyświetla wiadomość z użyciem podanego przez niego tekstu.

Twój skrypt powinien:

  1. Zaczynać się od wiersza shebang (#!/bin/bash)
  2. Używać read z flagą -p, aby wyświetlić pytanie: What is your favorite color?
  3. Zapisywać dane wejściowe w zmiennej o nazwie color
  4. Używać echo, aby wyświetlić: Nice! [color] is a great color! (gdzie [color] to dane wprowadzone przez użytkownika)

Nadaj skryptowi uprawnienia do wykonywania, a następnie uruchom go, podając blue jako dane wejściowe. Ten terminal nie jest interaktywny — nie może się zatrzymać i czekać, aż coś wpiszesz, więc przekaż odpowiedź do skryptu za pomocą potoku:

echo "blue" | ./greeter.sh

Wynik powinien wyglądać tak:

Nice! blue is a great color!

Uwaga: pytanie What is your favorite color? nie jest tu wyświetlane. read -p wyświetla swój tekst zachęty tylko wtedy, gdy dane wejściowe pochodzą z klawiatury, a tutaj pochodzą z potoku.

Każdy wpisywany wiersz ujmij w apostrofy: echo 'echo "Hello $name"' >> script.sh. Apostrofy powstrzymują powłokę przed zastąpieniem $name podczas zapisywania pliku, dzięki czemu skrypt zachowuje zmienną i rozwija ją podczas uruchamiania. Cudzysłowy spowodowałyby podstawienie wartości od razu.

Podpowiedź: Twórz skrypt wiersz po wierszu, używając echo z przekierowaniem. Użyj read -p "What is your favorite color? " color, aby wyświetlić pytanie i pobrać dane wejściowe, a następnie echo "Nice! $color is a great color!", aby wyświetlić wynik.

Spróbuj swoich sił

Terminal
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Terminal