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 saklar.
İş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 ve ardından onu selamlar. read komutu, kullanıcının yazdığı her şeyi alır ve name değişkeninde saklar.
-p bayrağını kullanarak istemi daha temiz hale getirebilirsiniz; bu bayrak istem mesajını ve girdiyi aynı satırda birleştirir:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"Bu komut Enter your name: metnini görüntüler ve girdi için aynı satırda bekler, bu da daha şık görünür. -p bayrağı, istem metnini bağımsız değişken olarak alır ve ardından girdiyi saklayacak değişken adı gelir.
Kullanıcı girdisi, betikleri etkileşimli ve uyarlanabilir hale getirir. Değerleri doğrudan koda sabitlemek yerine, kullanıcının betiği her çalıştırdığında sunduğu bilgilere göre farklı şekilde çalışan tek bir betik yazabilirsiniz.
Görev
KolayKullanıcıya en sevdiği rengi soran ve ardından aldığı girdiyi kullanarak bir mesaj görüntüleyen greeter.sh adında bir shell betiği oluşturun.
Betiğiniz şunları yapmalıdır:
- Shebang satırı (
#!/bin/bash) ile başlamalıdır - İstekte bulunmak için
-pbayrağı ilereadkullanmalıdır:What is your favorite color? - Girdiyi
coloradında bir değişkende saklamalıdır - Bunu yazdırmak için
echokullanmalıdır:Nice! [color] is a great color!([color] kullanıcının girdisi olacak şekilde)
Betiği çalıştırılabilir hale getirin, ardından girdi olarak blue vererek çalıştırın. Bu terminal etkileşimli değildir — durup yazmanızı bekleyemez — bu nedenle bir pipe kullanarak cevabı betiğe gönderin:
echo "blue" | ./greeter.shÇıktınız şu şekilde olmalıdır:
Nice! blue is a great color!Not:
What is your favorite color?istemi burada görüntülenmez.read -pistemini yalnızca girdi bir klavyeden geldiğinde yazdırır; burada ise pipe üzerinden gelmektedir.
İpucu: Yönlendirme ile
echokullanarak betiği satır satır oluşturun. İstemde bulunmak 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ı