Bash tuşa basmak için bekle

Bash Wait Keypress



`read` komutu, bir bash betiğinde kullanıcı girdisi almak için kullanılır. Read komutuyla çeşitli seçenekler kullanarak bash betiğinde girdi alabiliriz. Bazen betiği, betiğin belirli bir tuşa basılana kadar çalışacak veya belirli bir komut dosyası belirli bir tuşa göre yürütülecek veya program herhangi bir tuşa basılana kadar belirli bir süre bekleyecek şekilde yazmamız gerekir. Belirli bir anahtarı veya bazı görevlerin herhangi bir anahtarını beklemek için nasıl bash betiği yazabileceğiniz, bu öğreticide farklı örnekler kullanılarak gösterilmektedir.

Örnek 1:

Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Komut dosyasını çalıştıracağınız zaman, kullanıcı herhangi bir tuşa basana kadar devam edecektir. Komut dosyası her 3 saniyede bir kullanıcının girişini bekleyecek ve kullanıcı herhangi bir tuşa basmazsa mesajı yazdıracaktır, tuşa basmayı beklemek .







#!/bin/bash
dışarı attı 'Devam etmek için herhangi bir tuşa basın'
süre [ NS ];yapmak
okuman -T 3 -n 1
Eğer [ $?=0 ];sonra
çıkış;
Başka
dışarı attı 'tuşa basılmasını bekliyorum'
olmak
tamamlamak

Komut dosyasını çalıştırın.



$bashkey1.sh

Çıktı:







Örnek #2:

Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Bu örnekte, kullanıcı 'q' tuşuna bastığında sona erecek olan sonsuz bir while döngüsü kullanılmıştır. Kullanıcı 'q' olmadan herhangi bir tuşa basarsa, sayaç değişkeninin değeri 1 artırılır ve değeri yazdırılır.

#!/bin/bash
dışarı attı 'Çıkmak için 'q' tuşuna basın'
saymak=0
süre:;yapmak
okuman -n 1ile<&1
Eğer [[ $ bin= q]];sonra
baskı ' Programdan çıkmak '
kırmak
Başka
((saymak=$sayım+1))
baskı ' için yinele$sayımzamanlar '
dışarı attı 'Çıkmak için 'q' tuşuna basın'
olmak
tamamlamak

Komut dosyasını çalıştırın.



$bashkey2.sh

Çıktı:

Örnek#3:

Kullanıcı tarafından basılan tuşa göre farklı türde görevler yapacak olan aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Kullanıcı '1'e basarsa, iki komut satırı argümanı ekler ve yazdırır. Kullanıcı '2'ye basarsa, iki komut satırı argümanını çıkarır ve yazdırır. Komut dosyası, kullanıcı '3' tuşuna basana kadar sürekli olarak çalışacaktır.

#!/bin/bash
v1=1 dolar
v2=2 dolar
süre:
yapmak
dışarı attı '1. Ek'
dışarı attı '2. Çıkarma'
dışarı attı '3. Çıkış yapmak'
dışarı attı -n '1 veya 2 veya 3 yazın:'
okuman -n 1 -T on beşile
baskı ' '
durum $ bir içinde
1* ) dışarı attı '$v1+$v2=$(($v1+$v2))';;

2* ) dışarı attı '$v1-$v2=$(($v1-$v2))';;

3* ) çıkış 0;;


* ) dışarı attı 'Tekrar deneyin.';;
esac
tamamlamak

Komut dosyasını iki sayısal bağımsız değişken değeriyle çalıştırın.

$bashkey3.sh35 on beş

Çıktı:

Örnek#4:

Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Kullanıcı ESC tuşuna bastığında komut dosyası sonlandırılacaktır. Bu komut dosyası, ESC tuşuna basılana kadar kullanıcı tarafından basılan tuşları yazdıracaktır.

#!/bin/bash
kullanıcı girişi=''
dışarı attı 'Çıkmak için ESC tuşuna basın'
# tek bir karakter oku
süre okuman -r -n1anahtar
yapmak
# if girişi == ESC tuşu
Eğer [[ $anahtar== $'Ve' ]];
sonra
kırmak;
olmak
# Kullanıcı tarafından basılan değişkene anahtarı ekleyin.
kullanıcı girişi+=$anahtar
tamamlamak
baskı ' Yazdınız:$kullanıcı girişi '

Komut dosyasını çalıştırın.

$bashkey4.sh

Çıktı:

Örnek#5:

Komut dosyasını sonlandırmak için ENTER tuşunun bekleyeceği aşağıdaki kodla bir bash dosyası oluşturun. Komut dosyası girdi olarak bir sunucu adı alacak ve her 2 saniyede bir sunucuya ping atmaya çalışacaktır. Eğer ping komutu sunucudan yanıt alırsa, çıktıyı görüntüleyerek betiği sonlandıracak, aksi takdirde kullanıcının yanıtını bekleyecek veya ENTER tuşuna basıp, İle bağlanmaya çalışılıyor… mesajını yazdıracaktır.

#!/bin/bash
dışarı attı 'Ping atmak istediğiniz sunucu adresini girin'
okumansunucu
süre ! ping atmak -C 1 -n -İÇİNDE 2 $sunucu
yapmak
dışarı attı 'ile bağlantı kurmaya çalışıyorum$sunucu'
dışarı attı 'Sonlandırmak için [ENTER]'a basın'
okuman -s -N 1 -T 1anahtar
Eğer [[ $anahtar== $' x0a' ]];# if girişi == ENTER tuşu
sonra
çıkış 0
olmak
tamamlamak
baskı '%s ' '$sunucuçalışıyor'

Komut dosyasını çalıştırın.

$bashkey5.sh

Çıktı:

Çözüm:

Bu öğretici, kullanıcının herhangi bir belirli görevi yerine getirmesini veya komut dosyasını sonlandırmasını bekleyecek olan bash komut dosyasını çeşitli şekillerde nasıl yazabileceğinizi gösterir. Umarım, yukarıdaki örnekleri uyguladıktan sonra, komut dosyasını herhangi bir tuşa basılmasını bekleyebilecek ve kullanıcının bastığı tuşa göre belirli görevi yapabilecek şekilde yazabileceksiniz.