Yeni Başlayanlar için Bash Komut Dosyası Eğitimi

Bash Scripting Tutorial



Linux'un varsayılan komut dili Bash betiğidir. Birçok amaç için günlük olarak Linux'ta birçok komut çalıştırmamız gerekiyor. Bu günlük görevler, bir bash betiği kullanılarak otomatikleştirilebilir. Herhangi bir kullanıcı bu betik dilini çok kolay ve hızlı bir şekilde öğrenebilir. Bash programlamada yeniyseniz, bu eğitim tam size göre.

İçindekiler:

  1. Yorumlar
  2. yankı Komutu
  3. Değişkenler
  4. koşullu ifade
  5. döngüler
  6. Fonksiyonlar
  7. Bir komut dosyasındaki programları çağırma
  8. Menü Oluşturma
  9. Komut Satırı İşleme
  10. Aritmetik
  11. dize manipülasyonu
  12. Bir komut dosyasından dönüş kodlarını döndürme ve başka bir komut dosyasında yakalama
  13. Dosyaları okuma ve yazma
  14. borular

Yorumlar

Kodla yorum eklemek, herhangi bir programlama dilinin önemli bir parçasıdır. Yorumlar, yürütme sırasında komut dosyasıyla ayrıştırılmaz. Kod iyi yorumlanırsa okuyucu herhangi bir kodu doğru bir şekilde anlayabilir. Bash betiğinde birden çok şekilde yorum ekleyebilirsiniz. Bir bash betiğine tek satırlı ve çok satırlı yorumları nasıl ekleyebileceğiniz bu bölümde gösterilmektedir. Bash yorumunun kullanımını öğrenmek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Burada, tek satırlık yorum eklemek için '#' sembolü ve çok satırlı yorum eklemek için ':' ile tek tırnak (') kullanılır.







bash_comment.sh



#!/bin/bash
#Giriş olarak bir sayı al
dışarı attı 'Bir sayı girin'
okumanile
:'
Giriş numarasını kontrol edin
10'dan küçük veya 10'dan büyük veya 10'a eşit
'

Eğer [[ $ bir -lt 10 ]]
sonra
dışarı attı 'Sayı 10'dan az'
elif [[ $ bir -gt 10 ]]
sonra
dışarı attı 'Sayı 10'dan büyük'
Başka
dışarı attı 'Sayı 10'a eşit'
olmak

Çıktı:



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





$bashbash_comment.sh

Burada komut dosyası 3, 10 ve 90 giriş değeriyle üç kez yürütülür. Aşağıdaki çıktı görünecektir.



Bash yorumu hakkında daha fazla bilgi edinmek istiyorsanız, kontrol edebilirsiniz. bu eğitim .

Başa gitmek

yankı komutu

Terminalde çıktıyı yazdırmak için bash'ta 'echo' komutu kullanılır. Çıktıyı farklı şekillerde yazdırmak için bash'ta echo komutu ile çeşitli seçenekler kullanılabilir. 'echo' komutunun iki basit kullanımını öğrenmek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Burada, ilk 'echo' komutu yeni bir satırla basit bir metin verisi yazdıracak ve ikinci yankı komutu yeni satır olmadan basit bir metin yazdıracaktır.

echo_test.sh

#!/bin/bash
#İlk metni yazdır
dışarı attı 'Metni yeni bir satırla yazdır'
#İkinci metni yazdır
dışarı attı -n 'Metni yeni satır olmadan yazdır'

Çıktı:

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

$bashecho_test.sh

Yukarıdaki komutu çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Bash'de 'echo' komutunun başka birçok kullanımı vardır. 'echo' komutu hakkında daha fazla bilgi edinmek için bu öğreticiyi kontrol edebilirsiniz.

Başa gitmek

Değişkenler

Değişken bildirimi, herhangi bir programlama dilinin gerekli bir parçasıdır. Bash değişkenleri farklı şekillerde bildirilebilir. Bir değişkene bir değer atandığında, değişkenin başında herhangi bir sembol kullanılmaz. Değişkenin değeri okunurken değişken ismi ile birlikte '$' sembolü kullanılır. Değişken, terminalden kullanılabilir veya herhangi bir bash betiğinde kullanılabilir.

Aşağıdaki komutlar adında bir dize değişkeni bildirecektir. gizem belirli bir değerle ve sonra değişkenin değerini terminalde yazdırın.

$gizem='Bash programlamayı seviyorum'
$dışarı attı $ mystr

Çıktı:

Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Burada iki değişken bildirilmiştir. Bunlar $ bir ve $b . İçinde saklanan giriş değeri ise $ bir eşittir $b sonra mesaj, Sayılar eşittir aksi yazdırılacak Sayılar eşit değil basılacaktır.

var.sh

#!/bin/bash
dışarı attı 'Bir sayı girin'
okumanile
B=100
Eğer [[ $ bir -eq $b ]]
sonra
dışarı attı 'Sayılar eşit'
Başka
dışarı attı 'Sayılar eşit değil'
olmak

Çıktı:

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

$bashvar.sh

Yukarıdaki komut 56 ve 100 değeri ile iki kez yürütülür. Aşağıdaki çıktı görünecektir.

Bash değişkenleri hakkında daha fazla bilgi edinmek istiyorsanız, kontrol edebilirsiniz. bu eğitim .

Başa gitmek

koşullu ifade

Başka bir programlama dili gibi, koşullu ifadeyi bash'ta kullanabilirsiniz. ' eğer-o zaman-else ' ve ' durum ' deyimleri esas olarak herhangi bir programlama dilinde koşul deyimlerini uygulamak için kullanılır. kullanarak koşullu ifadenin kullanımı 'Eğer' ifadesi bu öğreticinin bu bölümünde gösterilir. Koşullu ifadenin kullanıldığı aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Burada kullanıcıdan girdi olarak iki değer alınacak ve değişkenlerde saklanacak, $kodu , ve $yaş . değerini kontrol etmek için 'if' ifadesi kullanılır. $yaş büyüktür veya eşittir 18 ve değeri $kodu NS 1100 . Her iki koşul da doğruysa mesaj, filmi izlemeye hakkınız var aksi yazdırılacak Filmi izlemeye uygun değilsiniz basılacaktır.

koşul.sh

#!/bin/bash

dışarı attı 'Kodunuzu girin'
okumankod
dışarı attı 'Yaşınızı girin'
okumanyaş

Eğer [[ $yaş -vermek 18 && $kodu -eq '1100' ]]
sonra
dışarı attı 'Filmi izlemeye hakkınız var'
Başka
dışarı attı 'Filmi izlemeye hakkınız yok'
olmak

Çıktı:

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

$bashkoşul.sh

Farklı giriş değerleri alındıktan sonra aşağıdaki çıktı görünecektir. 1100 kod olarak verilir ve 5 ilk çalıştırma için yaş olarak verilir ve bu değerler için koşul false döndürürse. 1100 kod olarak verilir ve 45, if koşulu için true döndüren ikinci yürütme için yaş olarak verilir.

Bash koşullu ifade hakkında daha fazla bilgi edinmek istiyorsanız, bu öğreticiyi kontrol edebilirsiniz.

Başa gitmek

döngüler

Komut dosyasının bazı bölümlerinin birden çok kez yürütülmesi gerektiğinde, görevi yapmak için döngü kullanılır. Bash, diğer diller gibi üç tür döngü bildirimini destekler. Bunlar for, while ve while döngüleridir. Programlama gereksinimlerine bağlı olarak, komut dosyasında belirli bir döngü kullanılır. Bu üç tip döngünün kullanımları bu bölümde basit örnekler kullanılarak gösterilmiştir.

for döngüsü kullanma

Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun, burada ` için döngü yineleme için kullanılır. 'için' döngü esas olarak bir veri listesini veya bir diziyi yinelemek için kullanılır. Burada, bir hafta içi gün adı listesi kullanılır ve her hafta içi gün adı for döngüsü kullanılarak yinelenir. 'eğer' deyimi, hafta içi adına göre belirli bir mesajı yazdırmak için kullanılır.

for.sh

#Döngünün her yinelemesinde bir hafta içi adı oku
içingüniçindePazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar
yapmak

#Hafta içi adının Pazartesi veya Perşembe olup olmadığını kontrol edin
Eğer [[ $gün=='Pazartesi' || $gün=='Perşembe' ]]
sonra
dışarı attı 'Toplantı$günsaat 9:30'da

#Hafta içi adının Salı veya Çarşamba veya Cuma olup olmadığını kontrol edin
elif [[ $gün=='Salı' || $gün=='Çarşamba' || $gün=='Cuma' ]]
sonra
dışarı attı 'Üzerinde antrenman yapıyor$günsaat 11:00'de
Başka

#Diğer günler için 'Tatil' yazdır
dışarı attı '$güntatil mi'
olmak
tamamlamak

Çıktı:

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

$bashfor.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Bash for döngüsünün daha fazla kullanıldığını bilmek istiyorsanız, bu öğreticiyi kontrol edebilirsiniz.

while döngüsünü kullanma

Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun, burada ` iken ` döngü yineleme için kullanılır. Bu komut dosyası, 1'den 20'ye kadar olan ve 5'e bölünebilen sayıları yazdıracaktır. $sayaç değişken, döngünün yinelemesini kontrol etmek için kullanılır ve bu değişkenin değeri her yinelemede 1 artırılır. Ne zaman 'eğer' koşul true değerini döndürür ve ardından değerini yazdırır $sayaç .

#!/bin/bash

#Mesajı yazdır
dışarı attı 'Çift ve 5'e bölünebilen sayıları yazdırın'

#Sayacı başlat
tezgah=1

#$counter değeri 20'den küçük veya ona eşit olana kadar döngüyü yineleyin
süre [ $sayaç -NS yirmi ]
yapmak

#$counter'ın 2 ve 5'e bölünebildiğini kontrol edin
Eğer [[ $sayaç%2-eq 0 && $sayaç%5-eq 0 ]]
sonra
#$counter'ı satırsonu olmadan yazdır
dışarı attı '$sayaç'
olmak

#$sayacını 1 artır
((sayaç++))
tamamlamak
dışarı attı 'Tamamlandı'

Çıktı:

$bashwhile.sh

Sadece 1-20 arasında çift ve 5'e bölünebilen sayılar vardır. Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Bash `ın daha fazla kullanıldığını bilmek istiyorsanız süre' döngü sonra kontrol edebilirsiniz bu eğitim .

Döngüye kadar kullanma

Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun, burada ` kadar' döngü yineleme için kullanılır. Bu komut dosyası, 0'dan 20'ye kadar olan tüm tek sayıları yazdıracaktır. $n değişken bu komut dosyasında döngüyü yinelemek için kullanılır.

kadar.sh

#!/bin/bash

#Değişkeni başlat, n
n=yirmi

#$n değeri 0'dan büyük olana kadar döngüyü tekrarlayın
a kadar [ $n -lt 0 ]
yapmak

#n değerinin tek olup olmadığını kontrol edin
Eğer [[ $n%2-gt 0 ]]
sonra
dışarı attı $n
olmak

#n değerini 1 artır
((n=$n-1))
tamamlamak

Çıktı:

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

$bashkadar.sh

Komut dosyası 20'den 1'e kadar olan tüm çift sayıları yazdıracaktır. Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Başa gitmek

Fonksiyonlar

Bir kod bloğunun bir komut dosyasında birden çok kez yürütülmesi gerektiğinde, görevi yapmak için işlev kullanılır. Aynı komut dosyasını birden çok kez eklemek yerine, yalnızca işlevde tanımlanan komut dosyasının birçok kez yürütülmesi gerektiğinde işlevi adıyla çağırmanız gerekir. Bash betiğinde işlevi bildirmek için başlangıç ​​ve bitiş ilk parantez işlev adıyla birlikte kullanılır. İşlev, bash içindeki yalnızca işlev adıyla çağrılabilir. Bash, başka bir standart programlama dili gibi işlev argümanını desteklemez. Ancak değer, bu bölümde gösterilenden farklı bir şekilde bash işlevine geçirilebilir. Değer, return ifadesi ile veya return ifadesi kullanılmadan fonksiyondan döndürülebilir.

Bash komut dosyasında işlevlerin nasıl bildirilebileceğini ve çağrılabileceğini bilmek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Komut dosyasında üç işlev bildirilmiştir. İlk işlev, basit bir mesaj yazdırmak için bildirildi, Yeni başlayanlar için Bash Programlama . İkinci işlev, bir değişkende bir dize değeri atamak için bildirildi, $dönüş_str yazdıracak, LinuxHint ile bash programlamayı öğrenin işlevi çağırdıktan sonra. Üçüncü işlev, işlevin çağrılması sırasında sağlanacak daire yarıçapı olarak bir bağımsız değişken değerini okuyacak şekilde bildirilir. Buraya, yerel argüman değerini okumak için kullanılır. Bu fonksiyon, formülü kullanarak dairenin alanını yarıçap değerine göre hesaplayacaktır, πr2 ve hesaplanan alan değerini yazdırın.

func.sh

#!/bin/bash

#Basit bir işlev bildir
işlevprint_message()
{
dışarı attı 'Yeni başlayanlar için Bash programlama'
}

#Dize değeri döndürmek için bir işlev bildirin
işlevret_strdata()
{
#Değişkeni dize değeriyle başlat
dönüş_str='LinuxHint ile bash programlamayı öğrenin'
}

#Argüman değerini okumak için bir işlev bildir
işlevhesapla_alan()

#İletilen argüman değerini oku
yerel yarıçap=1 dolar
alan= $(dışarı attı $ yarıçap*$ yarıçap*3.14

#Basit bir mesaj yazdırmak için işlevi çağırın
print_message

#Bir değişkene dize değeri atayacak işlevi çağır
ret_strdata

#Değişkenin değerini yazdır
dışarı attı $dönüş_str

#Yarıçap değerini oku
dışarı attı 'Yarıçap değerini girin'
okumanİş

#Yarıçap değeriyle işlevi çağır
hesapla_alan$ rad

Çıktı:

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

$bashfunc.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir. İlk iki satır, işlevleri çağırarak yazdırılacaktır, print_message() ve ret_strdata () . Son satır, işlevi çağırarak yazdırılacaktır, hesapla_alan () alınan giriş yarıçap değeri ile.

Bash işlevinden bir dize döndürme hakkında bilgi edinmek istiyorsanız, şunları yapabilirsiniz: bu eğitim NS.

Başa gitmek

Bir komut dosyasındaki programları çağırma

Herhangi bir bash betiğindeki diğer programları çağırmak için birçok komut türünü kullanabilirsiniz, örneğin: kaynak, bash, değerlendirme, yürütmek , vb. Üç bash dosyası varsayalım, ekle.sh , çıkar.sh, çarpma.sh ve bölme.sh toplama, çıkarma, çarpma ve bölme yapmak için yaratılmıştır. Buraya, çıkarma.sh ve bölüm.sh komut satırı argümanlarını okuyun. Tüm bu dört dosyanın komut dosyası aşağıda verilmiştir.

ekle.sh

#!/bin/bash
ile=60
B=40
((sonuç=$ bir+$b))
dışarı attı 'Ek olarak$ bir+$b=$sonuç'

subract.sh

#!/bin/bash
ile=1 dolar
B=2 dolar
((sonuç=$ bir-$b))
dışarı attı ' çıkarma$ bir-$b=$sonuç'

çarpma.sh

#!/bin/bash
((sonuç=1 dolar*2 dolar))
dışarı attı '1$ ile 2$'ın çarpımı$sonuç'

böl.sh

#!/bin/bash
ile=1 dolar
B=2
((sonuç=$ bir/$b))
dışarı attı 'Bölünmesi$ birtarafından$bNS$sonuç'

adlı bir bash dosyası oluşturun, callpro.sh Source, bash, eval ve exec komutlarını kullanarak belirtilen bash dosyalarını çağırmak için aşağıdaki komut dosyasıyla. Aşağıdaki betiği çalıştırmadan önce yukarıdaki dört dosya için yürütme izni ayarlamalısınız. çağırmak için `source` komutu kullanılır. ekle.sh dosya. subtract.sh dosyasını çalıştırmak için `bash` komutu kullanılır. 'eval' komutu, multiple.sh dosyasını çalıştırmak için kullanılır. 'eval' komutu için komut satırı argümanları olarak iki giriş değeri gönderilir. Son komut, yalnızca mutlak yolla çalışan exec komutudur. Bunun için komut dosyasında split.sh dosyasının tam yol adı verilir.

callpro.sh

#!/bin/bash
komut dosyası1='add.sh'
komut dosyası2='çıkart.sh'
komut dosyası3='çarpma.sh'
komut dosyası4='/home/fahmida/code/divide.sh'

kaynak '$script1'

bash $script2 elli yirmi

dışarı attı 'a'nın değerini girin'
okumanile
dışarı attı 'b'nin değerini girin'
okumanB
değerlendirmek bash $script3 $ bir $b
yürütmek $script4 30

Çıktı:

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

$bashcallpro.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Başa gitmek

Menü Oluşturma

Bash'ta basit bir menü oluşturmak için kullanışlı bir komut vardır. 'seç' emretmek. Bu komut kullanılarak farklı tipte menüler oluşturulabilir. Bu komutla bir menü oluşturmak için belirli bir veri listesi kullanılır. Kullanımını görmek için aşağıdaki kodla bir bash dosyası oluşturun. 'seç' menü oluşturma komutu. Bu örnekte, beş öğeden oluşan liste bir menü olarak yazdırılacak ve kullanıcıdan listeden herhangi bir dili seçmesini isteyecektir. Seçilen değer değişkende saklanacaktır, $dil bu daha sonra başka bir dizeyle birleştirerek yazdırılır. Komut dosyası, kullanıcı düğmesine basana kadar sürekli olarak dili seçmeyi isteyecektir. 6 komut dosyasından sonlandırmak için.

menu.sh

#!/bin/bash

#Kullanıcı için mesaj yazdır
dışarı attı 'En sevdiğiniz dili seçin'

# Bir menü öğesinin listesini tanımlayın
SeçmedilimiçindeC# Java PHP Python Bash Çıkışı
yapmak
#Seçilen değeri yazdır
Eğer [[ $dil=='Çıkış' ]]
sonra
çıkış 0
Başka
dışarı attı 'Seçilen dil$dil'
olmak
tamamlamak

Çıktı:

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

$bashmenu.sh

Aşağıdaki çıktıya göre, kullanıcı PHP'yi yazdırırken ilk kez 3'e bastı ve komut dosyasından sonlanan ikinci kez 6'ya bastı.

Eğer 'seç' ile bash menü oluşturma hakkında daha fazla bilgi edinmek istiyorsanız, bu öğreticiyi ziyaret edebilirsiniz.

Başa gitmek

Komut Satırı İşleme

Bazen komut satırından betiği çalıştırırken girdi değerleri sağlamamız gerekir. Bu görev bash'ta iki şekilde yapılabilir. Bunun bir yolu, argüman değişkenlerini kullanmak ve bir başka yol da getopts işlevini kullanmaktır. Bu bölümde, argüman değişkeni kullanılarak terminalden komut satırı giriş verilerinin okunması gösterilmektedir.

Komut satırı bağımsız değişken değerini okuma kullanımını görmek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Bu komut dosyası, $operand1, $operand2 ve $operator değişkenlerinde saklanacak olan üç komut satırı argümanını okuyacaktır. Komut dosyasını düzgün bir şekilde yürütmek için, birinci ve üçüncü argüman değerleri sayı olmalı ve ikinci argüman değeri dört aritmetik işleçten ('+', '-', '/', 'x') herhangi biri olmalıdır. Eğer ifadesi $operator değerini kontrol edecek ve işlemi operatöre göre yapacak ve değeri yazdıracaktır.

cl1.sh

#!/bin/bash

#Argüman değişkenlerini yazdır
dışarı attı 'Argüman değerleri: $1 $2 $3'

# Argüman değerlerini depola
işlenen1=1 dolar
işlenen2=3 dolar
Şebeke=2 dolar

#Aritmetik işlemi yapmak için 2. komut argüman değerini kontrol edin
Eğer [[ $ operatörü=='+' ]]
sonra
((sonuç=$ işlenen1+$ işlenen2))
elif [[ $ operatörü=='-' ]]
sonra
((sonuç=$ işlenen1-$ işlenen2))
elif [[ $ operatörü=='x' ]]
sonra
((sonuç=$ işlenen1*$ işlenen2))
elif [[ $ operatörü=='/' ]]
sonra

((sonuç=$ işlenen1/$ işlenen2))
olmak

# sonucu yazdır
dışarı attı -Ve 'Sonuç =$sonuç'

Çıktı:

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

$bashcl1.sh

Komut dosyası, dört tür aritmetik işleç için dört kez yürütülür. Argüman değerleri için aşağıdaki çıktı görünecektir, 6 + 3, 6 – 3, 6 x 3 ve 6 / 3 .

Argüman değerleri, bash'ta ad-değer çifti ile iletilebilir. Adla bağımsız değişken değerlerinin nasıl okunacağını göstermek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Komut dosyası iki argüman değişkeni okuyacaktır. name ile bağımsız değişken değerleri, komut dosyasının ilk ifadesinde yazdırılır. Ardından, komut satırı bağımsız değişken değerlerini içeren diziyi yinelemek için bir for döngüsü kullanılır. Dizinin her elemanı, 'cut' komutu kullanılarak bir anahtar-değer çiftine ayrılır. Ardından, anahtar değerine dayalı olarak belirli bir mesajı yazdırmak için case ifadesi kullanılır.

cl2.sh

#! /NS/bash

#Argüman değişkenlerini yazdır
dışarı attı 'Argüman değerleri: $1 $2'

#for döngüsünü kullanarak her bir argümanı ayrı ayrı okuyun
içinsinirliiçinde ' [e-posta korumalı]'
yapmak

#Ayrı bağımsız değişken adı ve değeri
anahtar= $(dışarı attı $ argüman | kesmek -f1 -NS=)
değer= $(dışarı attı $ argüman | kesmek -f2 -NS=)

#Argüman adına göre mesaj yazdır
durum $anahtar içinde
isim) dışarı attı 'Öğrencinin adı =$değer';;
işaret) dışarı attı 'Alınan işaret =$değer' ;;
*)
esac
tamamlamak

Çıktı:

Komut dosyasını aşağıdaki komut satırı bağımsız değişkenleriyle çalıştırın.

$bashcl2.shisim=Abir Hossainişaret=90

Yukarıdaki komutlarda iki komut satırı argümanı sağlanmıştır. Bunlar isim=Abir Hossain ve işaret=90 . isim ve işaretler komut dosyasıyla ayrılır ve çıktı biçimlendirildikten sonra iki değer yazdırılır.

Komut satırı bağımsız değişkenlerini kullanarak işleme getopts işlevi bu eğitimde tartışılmamıştır. Kullanarak komut satırı işleme hakkında bilgi edinmek istiyorsanız getopts işlev sonra ziyaret edebilirsiniz bu eğitim .

Başa gitmek

Aritmetik

Aritmetik işlem yapmak, herhangi bir programlama dilinin ortak bir gereksinimidir. Bash, aritmetik işlemi başka bir standart programlama dilinden farklı bir şekilde yapar. Bash'de aritmetik işlemler yapmanın birden çok yolu vardır. Aritmetik işlemi yapmanın basit yollarından biri bu bölümde gösterilmiştir. Aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Bu komut dosyasında dört tür aritmetik işlem gösterilmektedir. Komut dosyasının başında çift ilk parantez kullanılarak basit bir toplama ve bölme işlemleri gösterilir. Ardından, ön artırma işlemi gösterilir. Son olarak, stenografi operatörünün nasıl kullanılacağı betiğin son bölümünde gösterilmiştir.

arit.sh

#!/bin/bash
# Toplamı hesapla
sonuç= $((elli+25))
# Toplam değeri yazdır
dışarı attı 'toplam =$sonuç'

# Bölmeyi hesapla
sonuç= $((elli/25))
# Bölme değerini yazdır
dışarı attı 'bölüm =$sonuç'

# N'ye bir değer atayın
n=10
# Ön artırma yapmak
((--N))
# N değerini yazdır
dışarı attı 'Azaltmadan sonraki değer =$N'

# steno operatörünü kullanma
((N +=10 ))
# N değerini yazdır
dışarı attı '10 ekledikten sonraki değer =$N'

Çıktı:

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

$basharit.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Yukarıdaki komut dosyasında tüm aritmetik işlemler çift parantez kullanılarak yapılır. Ama kullanabilirsiniz' İzin Vermek ',' ifade ' ve ' M.Ö ' bash'ta aritmetik işlemi yapma komutu. Bash aritmetik işlemleri yapmak için bu komutlar hakkında daha fazla bilgi edinmek istiyorsanız, bu öğreticiyi ziyaret edebilirsiniz.

Başa gitmek

dize Manipülasyonu

Bash'deki dize verileriyle birçok türde görev yapılabilir. Bazıları dizgeyi bitiştirme, dizgiyi karşılaştırma, dizgiyi bölme, dizginin büyük/küçük harf değiştirme vb.dir. Bash'de dizgi işlemlerini yapmak için diğer standart diller gibi yerleşik dizgi işlevleri yoktur. Bu öğreticinin bu bölümünde bazı yaygın dize manipülasyonları tartışılmaktadır.

Birleştirici Dize

İki veya daha fazla dizeyi birbirine eklemeye dize birleştirme denir. Dize, birbiri ardına yerleştirilerek bash içinde birleştirilir. Dize birleştirme kullanımını göstermek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. İki dize değişkeni başlatılır ve değişkenler birleştirildikten sonra yazdırılır. Burada, içeriği $dize1 ve $dize2 birleştirilecek ve yazdırılacaktır.

concat.sh

#!/bin/bash

#İlk dize değişkenini başlat
dize1='Severim '
#İkinci dize değişkenini başlat
dize2='Bash Programlama'
#İki dizeyi birleştirdikten sonra yazdır
dışarı attı '$dize1$dize2'

Çıktı:

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

$bashconcat.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Bu öğreticiden dize birleştirme hakkında daha fazla bilgi edinebilirsiniz.

Başa gitmek

Dize karşılaştırma

Bash, dize verilerini karşılaştırmak için farklı operatör türleri kullanır. İki dize verisinin nasıl karşılaştırılacağını göstermek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Komut dosyasında başka bir dizeyle karşılaştırılan bir dize değeri girdi olarak alınır. Değer eşleşirse bir mesaj, Python'u seviyorsun aksi yazdırılacak Perl'den hoşlanıyorsun basılacaktır.

karşılaştırmak.sh

#!/bin/bash
dışarı attıHerhangi bir dize değeri girin
okumanMetin

#Giriş verilerinin Python'a eşdeğer olup olmadığını kontrol edin
Eğer [ $metin=='Piton' ];sonra
dışarı attı 'Python'u seviyorsun.'
Başka
dışarı attı 'PERL'i seviyorsun'
olmak

Çıktı:

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

$bashkarşılaştırmak.sh

Giriş değerinin 'PERL' olduğu betiği çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Dize karşılaştırması hakkında daha fazla bilgiyi şuradan edinebilirsiniz: bu eğitim .

Bölme dizesi

Bash, dize verilerini bölmek için yerleşik bir bölme işlevine sahip değildir. Dize verileri, farklı sınırlayıcı türlerine göre bash'ta birden çok yolla bölünebilir. Dize verilerinin bash'a nasıl bölünebileceğini göstermek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Girdi olarak bir dize değeri alınır. Bu komut dosyası değerini bölecek $metin uzaya dayalı. Burada, IFS sınırlayıcıyı ayarlamak için değişken kullanılır. 'oku' komut burada metin değerini bölmek ve değerleri bir dizide saklamak için kullanılır. için döngü diziyi yinelemek ve her öğenin değerini yazdırmak için kullanılır.

split.sh

#!/bin/bash
#Bir dize değeri girin
dışarı attıBir dize değeri girin
okumanMetin
# Sınırlayıcıyı ayarlayın
IFS=''
#$metnin değerini boşluk sınırlayıcıya göre bir diziye böl
okuman -ilevarış<<< '$metin'
# Dizinin her değerini yazdır
içindeğeriçinde '${arr[@]}';
yapmak
baskı '$değer '
tamamlamak

Çıktı:

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

$bashsplit.sh

Girişi aldıktan sonra aşağıdaki çıktı görünecektir, Bash programlamayı öğrenin . Bu giriş değeri, üç kelimelik bir metindir. Böylece, dize üç bölüme ayrılmıştır.

Dize karşılaştırması hakkında daha fazla bilgiyi şuradan edinebilirsiniz: bu eğitim .

Dizenin Değişen Durumu

Komut dosyası dillerinin çoğu, dize verilerinin durumunu değiştirmek için yerleşik işlevlere sahiptir. Ancak dize verilerinin durumu, bash kullanılarak değiştirilebilir. `tr` komutunu kullanarak veya kullanarak ':üst' ve ':daha düşük' anahtar kelimeler. Bash'de büyük/küçük harf değiştirmenin yollarını öğrenmek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. Burada, ilk dize verileri kullanılarak büyük harfe dönüştürülür. '^^' sembolü ve ikinci dize kullanılarak küçük harfe dönüştürülür `tr` emretmek. `tr` komutu, dizedeki tüm büyük harfleri arar ve karakterleri küçük harfe dönüştürür.

vaka.sh

#!/bin/bash

#İlk dize verilerini başlat
Metin 1=' [e-posta korumalı]'

#Tüm karakterleri büyük harfe dönüştürerek $text1 değerini yazdırın
dışarı attı ${e-posta^^}

#İkinci dize verilerini başlat
metin2='Bash Programlama Temelleri'

#Tüm büyük harfleri küçük harfe dönüştürerek $text2 değerini yazdırın
dışarı attı $metin2 | NS [:üst:] [:daha düşük:]

Çıktı:

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

$bashvaka.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Dize karşılaştırması hakkında daha fazla bilgiyi şuradan edinebilirsiniz: bu eğitim .

Başa gitmek

Döngü aracılığıyla dize verilerini okuma

Dize verileri, herhangi bir programlama dili için bir karakter dizisi olarak çalışır. Nasıl ' için ' döngüsü, bu bölümde bash'ta dize verilerini okumak için kullanılabilir. for döngüsü kullanarak dize değerinin her bir bölümünü okumak için aşağıdaki komut dosyasıyla bir temel dosya oluşturun.

readstr.sh

#!/bin/bas
# Bir metnin her kelimesini for döngüsünü kullanarak okuyun
içindeğeriçindeBash ProgramlamaiçinYeni Başlayanlar
yapmak
dışarı attı $değer
tamamlamak

Çıktı:

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

$bashreadstr.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Döngüyü kullanarak dize verilerini yineleme hakkında daha fazla bilgi edinebilirsiniz. bu eğitim .

Başa gitmek

Bir komut dosyasından dönüş kodlarını döndürme ve başka bir komut dosyasında yakalama

Bir bash betiği, betiği çağırarak ve kullanarak başka bir betikten dönüş kodlarını yakalayabilir. '$?' dönüş değerini okumak için Diyelim ki, adlı bir bash dosyası ilk.sh yürütüldükten sonra bir kod döndürür. Adlı başka bir bash dosyası oluşturun ikinci.sh ve dönüş değerini yakalamak ve diğer bazı görevleri yapmak için aşağıdaki komut dosyasını ekleyin. Her iki dosyanın kodu aşağıda verilmiştir. ilk.sh dosyadan çağrılacak ikinci.sh betiğin başındaki dosya. ilk.sh giriş değerine göre bir çıkış kodu döndürür. second.sh kodu şu şekilde yakalayacaktır: '$?' ve 1 ile karşılaştırın. Her iki değer de eşitse yazdırılır, Giriş numarası 100'den büyük , aksi takdirde yazdıracaktır, Giriş numarası 100'den küçük veya 100'e eşit .

ilk.sh

#!/bin/bash

dışarı attı 'Sayısal bir değer girin'
okumann

# Giriş değerinin 100'e eşit veya küçük olup olmadığını kontrol edin
Eğer [[ $n -NS 100 ]]
sonra
çıkış 0
Başka
çıkış 1
olmak

ikinci.sh

#! /bin/bash

#Dosyayı çalıştır, first.sh
bash 'ilk.sh'

#Dönüş kodunun 1'e eşit olup olmadığını kontrol edin
Eğer [ $? -eq 1 ]
sonra
dışarı attı 'Giriş numarası 100'den büyük'
Başka
dışarı attı 'Giriş numarası 100'den küçük veya ona eşit'
olmak

Çıktı:

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

$bashikinci.sh

Komut dosyası iki kez 55 ve 110 tarafından yürütüldüğünde aşağıdaki çıktı görünecektir.

Başa gitmek

Dosyaları okuma ve yazma

Dosyaları okumak ve yazmak, bash programlamanın ortak gereksinimleridir. Bash, dosyayı okumak veya yazmak için başka bir dil gibi yerleşik bir işleve sahip değildir. Dosyayı bash ile okumanın birden çok yolu vardır. Bash'de bir dosyayı okumanın veya yazmanın en yaygın yolu kullanmaktır. 'kedi' emretmek. Ancak bu komut, bir seferde dosyanın tüm içeriğini okumak için kullanılır. Ayrıca herhangi bir döngüyü kullanarak herhangi bir dosyayı satır satır okuyabilirsiniz ve 'oku' emretmek. Yönlendirme operatörünü kullanarak, '>' , bash'ta herhangi bir dosyaya veri yazabilirsiniz. Herhangi bir dosyaya veri eklemek istiyorsanız, kullanmanız gerekir. '>>' Şebeke. Hem okuma hem de dosya yazma işlemleri bu bölümün bir sonraki bölümünde gösterilmektedir.

Bash'de dosya okuma

' adlı mevcut bir dosyayı okumak için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun. donanım.txt '. Bu dosyanın içeriği aşağıda verilmiştir. Komut dosyasında, dosyanın tüm içeriği tarafından okunur. 'kedi' komut önce ve sonra, while döngüsü, dosyayı satır satır okumak için kullanılır.

donanım.txt

monitör
Tuş takımı
Fare
Tarayıcı
Yazıcı

okuma dosyası.sh

#!/bin/bash

dışarı attı 'Kedi komutunu kullanarak dosya okuma'

# `cat` komutunu kullanarak dosyanın içeriğini okuyun
içerik=``kedidonanım.txt``
dışarı attı $içerik

dışarı attı 'Döngü kullanarak dosya satır satır okuma'

# Dosya adını atayın
dosya adı='donanım.txt'

# Dosyanın her satırı, döngünün her yinelemesinde okunacaktır.
süre okumanhat;
yapmak
# satırı yazdır
dışarı attı $çizgi
tamamlamak<$dosya adı

Çıktı:

Aşağıdaki komutları çalıştırın.

$kedidonanım.txt
$bashokuma dosyası.sh

Burada, ilk komut dosyanın içeriğini yazdıracak, donanım.txt herhangi bir bash betiği çalıştırmadan ve ikinci komut betiği çalıştıracaktır. okuma dosyası.sh ve kullanarak dosyanın içeriğini iki kez yazdırın. 'kedi' komut ve 'oku' while döngüsü ile komut. Bunu ziyaret edebilirsiniz öğretici satır satır dosya okuma hakkında daha fazla bilgi için.

Bash ile dosya yazma

Yeni bir dosyaya yeni içerik yazmak ve bu dosyaya veri eklemek için aşağıdaki komut dosyasıyla bir bash dosyası oluşturun.

writefile.sh

#!/bin/bash

dışarı attı 'Biraz metin girin'
#Dize verilerini oku
okumanstr1
#Dosyaya ilk kez girdi verisi ekle
dışarı attı $str1 >test.txt

dışarı attı 'Başka bir metin girin'
#Başka bir dizi verisini oku
okumanstr2
#Dosyanın sonuna girdi verisi ekle
dışarı attı $str2 >>test.txt

#Dosyanın tam içeriğini göster
dışarı attı ``keditest.txt``

Çıktı:

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

$bashwritefile.sh

Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Başa gitmek

borular

Pipe, herhangi bir komut çıktısını başka bir komut girdisine yönlendirmek için kullanılır. Belirli çıktılar oluşturmak için farklı bash komutları arasında kullanılabilir. Standart giriş, Linux'ta boru ile standart çıkışa bağlanır. İstenilen çıktıyı elde etmek için komutu boru ( | ) sembolü ile sırayla ayarlamanız gerekir. İki veya daha fazla komut, boru kullanılarak tek bir komutta birlikte yürütülebilir. Aynı görevi yapmak için boru olmadan birden çok satırda birden çok komut yürütmeniz gerekir. Bu nedenle, boru kullanmak, birçok türde görevi kısa sürede yapmak için çok faydalıdır.

sözdizimi:

komut1|komut2|...

Burada, komut1'in çıktısı, komut2'nin girdisi olarak iletilecektir.

Bu bölümün bundan sonraki kısmında borulu ve borusuz aynı tip görev yapılır. adlı bir metin dosyası olduğunu varsayalım. mark.txt aşağıdaki verilerle verilmiştir.

mark.txt

Asraf ÖAM-409 79

Kabir ÖAM-304 95

Keya ÖAM-101 67

Asraf ÖAM-304 88

Keya ÖAM-409 90

Asraf ÖAM-101 92

Dosyanın verilerini sıralamanız ve 'K' öğrenci adının tüm girişini bulup yazdırmanız gerekir. Evet ' . Bu görevi, bir sonraki bölümde gösterilen bir boru kullanmadan birden çok komut çalıştırarak yapabilirsiniz. İstenen çıktıyı elde etmek için aşağıdaki komutların çalıştırılması gerekecektir. İlk komut dosyayı sıralayacaktır. İkinci komut, 'K girişini arayacaktır. Evet ' ` kullanarak kavramak ` komutunu verin ve çıktıyı içinde saklayın bir temp.txt dosya. Üçüncü komut, bir dizinin toplam satırlarını sayacaktır. temp.txt kullanarak dosya 'wc' emretmek.

$çeşitmark.txt
$kavramak 'Key'mark.txt>temp.txt
$tuvalet -NStemp.txt

Çıktı:

Dosyada öğrencinin iki girişi olan 'Keya' var. Yani yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Yukarıdaki üç komutu kolayca birleştirebilir ve aşağıdaki komutta gösterilen bir boru ile tek bir komut çalıştırarak aynı çıktıyı alabilirsiniz. Çıktıyı almak için burada geçici dosya gerekmez. Burada ` çıktısı çeşit ` komutu ` girişi olarak iletilecektir kavramak ` komutu ve ` çıktısı kavramak ` komutu girdi olarak iletilecektir. 'wc' emretmek.

$çeşitmark.txt| kavramak 'Key' | tuvalet -NS

Çıktı:

Yukarıdaki komutu çalıştırdıktan sonra, önceki komutun çıktısı gibi aşağıdaki çıktıyı alacaksınız. Komutun çıktısı 2 olacaktır.

Başa gitmek

Çözüm:

Bu eğitimde bash betik dilinin en faydalı ve gerekli konuları ele alınmaya çalışılmaktadır. Umarım, okuyucu bu öğreticiyi okuduktan sonra yararlanacak ve bash betiğini daha verimli yazabilecektir.