oku – Standart Girişten Değerleri Oku
The okumak Yerleşik komut, standart girdinin tek satırını okumak için kullanılır. Bu komut, klavye girişini veya yeniden yönlendirme kullanıldığında bir dosyadaki veri satırını okumak için kullanılabilir. Komut aşağıdaki sözdizimine sahiptir:
Okumak [-seçenekleri] [değişken...]
nerede seçenekleri aşağıda listelenen mevcut seçeneklerden bir veya daha fazlasıdır ve değişken giriş değerini tutmak için kullanılan bir veya daha fazla değişkenin adıdır. Değişken adı belirtilmezse kabuk değişkeni YANIT veri satırını içerir.
Temel olarak, okumak Standart girişteki alanları belirtilen değişkenlere atar. Tamsayı değerlendirme komut dosyamızı kullanacak şekilde değiştirirsek okumakşöyle görünebilir:
#! / Bin / bash
# read-integer: bir tamsayının değerini hesaplayın.
echo -n "Lütfen bir tam sayı girin -> " read int
if [[ "$int" =~ ^-?[0-9]+$ ]]; sonra if [ $int -eq 0 ]; Daha sonra
echo "$int sıfırdır."
başka
if [ $int -lt 0 ]; Daha sonra
echo "$int negatif."
başka
echo "$int pozitif."
fi
if [ $((int % 2)) -eq 0 ]; ardından echo "$int çifttir."
başka
echo "$int tek sayı."
fi
başka
echo "Giriş değeri bir tamsayı değil." >&2 çıkış 1
fi
#! / Bin / bash
# read-integer: bir tamsayının değerini hesaplayın.
echo -n "Lütfen bir tam sayı girin -> " read int
if [[ "$int" =~ ^-?[0-9]+$ ]]; sonra if [ $int -eq 0 ]; Daha sonra
echo "$int sıfırdır."
başka
if [ $int -lt 0 ]; Daha sonra
echo "$int negatif."
başka
echo "$int pozitif."
fi
if [ $((int % 2)) -eq 0 ]; ardından echo "$int çifttir."
başka
echo "$int tek sayı."
fi
başka
echo "Giriş değeri bir tamsayı değil." >&2 çıkış 1
fi
Biz kullanmak kaçırmak ile -n bir bilgi istemi görüntülemek için (çıktıda sondaki yeni satırı bastıran) seçeneği ve ardından okumak değişkene bir değer girmek için int. Bu betiği çalıştırmak şununla sonuçlanır:
[ben@linuxbox ~]$ tamsayı okuma
Lütfen bir tam sayı girin -> 5
5 pozitiftir.
5 tektir.
[ben@linuxbox ~]$ tamsayı okuma
Lütfen bir tam sayı girin -> 5
5 pozitiftir.
5 tektir.
read, bu komut dosyasında gösterildiği gibi girişi birden fazla değişkene atayabilir:
#! / Bin / bash
# read-multiple: klavyeden birden fazla değer oku echo -n "Bir veya daha fazla değer girin > "
var1 var2 var3 var4 var5'i oku
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
#! / Bin / bash
# read-multiple: klavyeden birden fazla değer oku echo -n "Bir veya daha fazla değer girin > "
var1 var2 var3 var4 var5'i oku
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
Bu scriptte en fazla beş değer atayıp görüntülüyoruz. Nasıl olduğunu fark et okumak farklı sayıda değer verildiğinde şöyle davranır:
[ben@linuxbox ~]$ çoklu okuma
Bir veya daha fazla değer girin > abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[ben@linuxbox ~]$ çoklu okuma Bir veya daha fazla değer girin > a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[ben@linuxbox ~]$ çoklu okuma
Bir veya daha fazla değer girin > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
[ben@linuxbox ~]$ çoklu okuma
Bir veya daha fazla değer girin > abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[ben@linuxbox ~]$ çoklu okuma Bir veya daha fazla değer girin > a var1 = 'a'
var2 = '' var3 = '' var4 = '' var5 = ''
[ben@linuxbox ~]$ çoklu okuma
Bir veya daha fazla değer girin > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
If okumak beklenen sayıdan daha azını alırsa, ekstra değişkenler boştur, aşırı miktarda girdi ise tüm ekstra girdiyi içeren son değişkenle sonuçlanır.
Eğer bundan sonra hiçbir değişken listelenmemişse okumak komut, bir kabuk değişkeni, YANIT, tüm girdilere atanacaktır:
#! / Bin / bash
# read-single: birden fazla değeri varsayılan değişkene oku echo -n "Bir veya daha fazla değer girin > "
okumak
echo "CEVAP = '$REPLY'"
#! / Bin / bash
# read-single: birden fazla değeri varsayılan değişkene oku echo -n "Bir veya daha fazla değer girin > "
okumak
echo "CEVAP = '$REPLY'"
Bu betiği çalıştırmak şununla sonuçlanır:
[ben@linuxbox ~]$ tek okuma
Bir veya daha fazla değer girin > abcd
CEVAP = 'abcd'
[ben@linuxbox ~]$ tek okuma
Bir veya daha fazla değer girin > abcd
CEVAP = 'abcd'
Dökümanlar