Betiklerde Kullanıcı Girdisi
Coddy'nin Terminal Journey'sinin Temeller bölümünün bir parçası. Ders 69 / 82.
Değişkenler kullanışlıdır, ancak bazen betiğinizin çalışırken kullanıcıdan bilgi istemesini istersiniz. read komutu betiği duraklatır ve kullanıcının bir şey yazmasını bekler, ardından bu girdiyi bir değişkende depolar.
İşte nasıl çalıştığı:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"Bu betik çalıştığında soruyu yazdırır, kullanıcının adını yazıp Enter tuşuna basmasını bekler, ardından onu selamlar. read komutu, kullanıcının yazdığı şeyi alır ve name değişkeninde depolar.
-p işaretini kullanarak istemi daha temiz hâle getirebilirsin; bu işaret, istem mesajı ile girdiyi aynı satırda birleştirir:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Bu, Enter your name: ifadesini görüntüler ve aynı satırda girdi bekler; bu da daha profesyonel görünür. -p bayrağı, bağımsız değişkeni olarak istem metnini alır; ardından girdiyi depolayacak değişkenin adı gelir.
Kullanıcı girdisi, betikleri etkileşimli ve uyarlanabilir hâle getirir. Değerleri sabit kodlamak yerine, kullanıcıların her çalıştırdıklarında sağladıkları bilgilere göre farklı şekilde çalışan tek bir betik yazabilirsin.
Görev
KolayKullanıcıdan en sevdiği rengi isteyen ve ardından girdisini kullanarak bir mesaj görüntüleyen greeter.sh adlı bir kabuk betiği oluşturun.
Betiğiniz şunları yapmalıdır:
- Shebang satırıyla başlayın (
#!/bin/bash) - Kullanıcıdan şu istemi göstermek için
readkomutunu-pbayrağıyla kullanın:What is your favorite color? - Girdiyi
coloradlı bir değişkende saklayın - Şunu yazdırmak için
echokullanın:Nice! [color] is a great color!([color], kullanıcının girdisidir)
Betiği çalıştırılabilir hâle getirin, ardından girdi olarak blue ile çalıştırın. Bu terminal etkileşimli değildir; durup sizin yazmanızı bekleyemez. Bu nedenle yanıtı bir yönlendirmeyle betiğe gönderin:
echo "blue" | ./greeter.shÇıktınız şu olmalıdır:
Nice! blue is a great color!Not:
What is your favorite color?istemi burada görüntülenmez.read -p, istemini yalnızca girdi bir klavyeden geldiğinde yazdırır; burada ise girdi yönlendirmeden gelir.
Yazdığınız her satırı tek tırnak içine alın:
echo 'echo "Hello $name"' >> script.sh. Tek tırnaklar, dosya yazılırken kabuğun$nameifadesini değiştirmesini engeller; böylece betik değişkeni korur ve çalıştığında genişletir. Çift tırnaklar değeri hemen yerine koyar.
İpucu: Yönlendirmeyle birlikte
echokullanarak betiği satır satır oluşturun. Girdi istemek ve girdiyi yakalamak içinread -p "What is your favorite color? " color, ardından sonucu görüntülemek içinecho "Nice! $color is a great color!"kullanın.
Kendin dene
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4Dizinler
Bir Dizin OluşturBir Dizin KopyalaBir Dizin Taşı ve Yeniden AdlandırBir Dizin SilÖzet - Dizin İşlemleri7Dosya İçeriği
Head ve TailKelime SayısıSort KomutuUnik KomutuGrep TemelleriBayraklarla GrepÖzet - Metin Dedektifi10Günlük Analizörü Projesi
Proje Genel BakışıGünlük Dosyasını Görüntüleme13Kabuk Betikleme Temelleri
Kabuk Betiği NedirBir Betik Oluştur ve ÇalıştırBetiklerde DeğişkenlerBetiklerde Kullanıcı GirdisiIf İfadesiFor DöngüsüWhile DöngüsüÖzet - Sayı Tahmincisi2Navigasyon
Çalışma Dizini'ni YazdırDosyaları ListeleDizin DeğiştirMutlak ve Göreli YollarEv ve Kök DizinÖzet - Yolunu Bul8Yönlendirme
Standart ÇıktıDosyaya Üzerine YazmaDosyaya EklemeStandart GirdiStandart HataÖzet - Günlük Oluşturucu3Dosyalar
Bir Dosya OluşturBir Dosya OkuBir Dosya KopyalaBir Dosyayı Taşı ve Yeniden AdlandırBir Dosya SilÖzet - Dosya İşlemleri6Joker Karakterler ve Desenler
Yıldız Joker KarakteriSoru İşareti Joker KarakteriKöşeli Parantez JokerleriJoker Karakterleri BirleştirmeÖzet - Seçici İşlemler9Borulama
Boru Nedir?İki Komutu ZincirlemeBirden Fazla Komutu ZincirlemeGrep ile BoruÖzet - Veri Boru HattıKendi başına pratik yap: Terminal playground