fbpx
Muhteşem İndirim Kampanyası
  • 23 Saat
  • 59 Dakika
  • 32 Saniye

Tüm Hosting Planlarında %80'e varan indirim

gift box gift box circle circle not found not found gift box dots shape
not found
  • 30 Gün
  • 23 Saat
  • 59 Dakika
  • 32 Saniye
Hemen Faydalan!
Fiziksel Sunucu Aylık 5.000 TL

2.500 TL/Ay

Paketlere Bak
WordPress Hosting Aylık 39.99 TL

19.99 TL/Ay

Paketlere Bak
Bulut Sunucu Aylık 199.99 TL

99.99 TL/Ay

Paketlere Bak
Sanal Sunucu Aylık 189.99 TL

89.99 TL/Ay

Paketlere Bak

Contact Info

+90 (850) 885 0656

[email protected]

Linux’ta Bash Shell Komut Dosyasında Hata Ayıklama
Category
Linux
Posted on
Ekim 21, 2022

Linux’ta Bash Shell Komut Dosyasında Hata Ayıklama

Programlama dillerinin çoğunda, hata ayıklama için hata ayıklayıcı aracı mevcuttur. Hata ayıklayıcı, bir programı veya komut dosyasını çalıştırabilen ve komut dosyasının veya programın içindekileri çalışırken incelemenizi sağlayan bir araçtır.

Bu yazıda, linux’ta bir bash kabuk betiğinde satır satır hata ayıklamayı öğreneceğiz. Kabuk betiğinde herhangi bir hata ayıklayıcı aracımız yoktur, ancak -n, -v ve -x  gibi bash komut satırı seçeneklerinin yardımıyla hata ayıklamayı yapabiliriz.

Shell Komut Dosyasını Sözdizimi Hatası İçin Kontrol Etme

Bash komutunda -n seçeneğini kullanarak betiği çalıştırdığımızda betiği çalıştırmayacak, betiği okuyacak ve sözdizimini doğrulayacak ve varsa hataları bildirecektir.

Başka bir deyişle, -n seçeneği, noexec için shot (yürütme yok gibi) diyebiliriz, Shell’e komutları çalıştırmamasını söyler. Bunun yerine, kabuk yalnızca sözdizimi hatalarını kontrol eder.

Aşağıdaki içeriğe sahip bir komut dosyası oluşturalım,

$ vi debug_quotes.sh
#!/bin/bash
echo "USER=$USER"
echo "Today's Date: $(date)
echo "SHELL=$SHELL"

dosyayı kaydedip kapatın.

Şimdi betiği -n seçeneğiyle çalıştırmayı deneyin,

$ bash -n debug_quotes.sh
debug_quotes.sh: line 4: unexpected EOF while looking for matching `"'
debug_quotes.sh: line 5: syntax error: unexpected end of file

Yukarıdaki çıktı, sözdizimi hatası olduğunu, çift tırnak ‘”’ eksik olduğunu gösteriyor. Bunu düzeltmek için, bugünün tarihini gösteren satırın sonuna çift tırnak işareti koyun.

Linuxta Bash Shell Komut Dosyasinda Hata Ayiklama

Kabuk Komut Dosyasını Ayrıntılı Modda Çalıştırma

Bash komutundaki -v seçeneği , kabuk betiğine ayrıntılı modda çalışmasını söyler . Pratikte bu, kabuğun komutu çalıştırmadan önce her komutu tekrarlayacağı anlamına gelir. Bu, çoğu zaman hataları bulmaya yardımcı olabileceği için çok kullanışlıdır.

Aşağıdaki içeriğe sahip “listusers.sh” adında bir kabuk betiği yapalım ,

$ vi listusers.sh#!/bin/bash
cut -d : -f1,5,7 /etc/passwd | grep -v sbin | grep sh | sort > /tmp/users.txt
awk -F':' ' { printf ( "%-12s %-40s\n", $1, $2 ) } ' /tmp/users.txt
#Clean up the temporary file.
/bin/rm -f /tmp/users.txt

Komut dosyasını -v seçeneğiyle yürütün,

bash -v listusers.sh

çıktı,

Linuxta Bash Shell Komut Dosyasinda Hata Ayiklama2

Yukarıdaki çıktıda, komut dosyası çıktısı, komut dosyalarının komutlarıyla karıştırılır. Ancak -v seçeneğiyle , en azından betiğinizi çalıştırırken kabuğun ne yaptığına dair daha iyi bir görüş elde edersiniz.

Komut Dosyasını -n ve -v seçeneğiyle çalıştırma

Komut satırı seçeneklerini ( -n & -v ) birleştirebiliriz. Bu, komut dosyası çıktısını görüntülerken bir komut dosyasının sözdizimini kontrol edebildiğimiz için iyi bir kombinasyon oluşturur.

Daha önce kullanılan “debug_quotes.sh” betiğini ele alalım.

$ bash -nv debug_quotes.sh
#!/bin/bash
echo "USER=$USER"
echo "Today's Date: $(date)
echo "SHELL=$SHELL"
debug_quotes.sh: line 4: unexpected EOF while looking for matching `"'
debug_quotes.sh: line 5: syntax error: unexpected end of file

Kabuk Komut Dosyasında Satır Satır Hata Ayıklama

xtrace veya yürütme izlemesinin kısaltması olan -x seçeneği , kabuk değiştirme adımlarını gerçekleştirdikten sonra her komutu yankılamasını söyler. Böylece değişkenlerin ve komutların değerlerini görebiliriz. Çoğu zaman, bu seçenek tek başına bir sorunu teşhis etmeye yardımcı olur.

Çoğu durumda, -x seçeneği bir komut dosyası hakkında en yararlı bilgileri sağlar, ancak çok fazla çıktıya yol açabilir. Aşağıdaki örnek, bu seçeneği çalışırken göstermektedir.

 

$ bash -x listusers.sh
+ sort
+ grep sh
+ grep -v sbin
+ cut -d : -f1,5,7 /etc/passwd
+ awk -F: ' { printf ( "%-12s %-40s\n", $1, $2 ) } ' /tmp/users.txt
linuxtechi linuxtechi,,,
root root
+ /bin/rm -f /tmp/users.txt

Gördüğümüz gibi, kabuk her komutun önüne bir + işareti eklemiştir.

Hepsi bu gönderiden. Bilgilendirici ve faydalı buldum. Lütfen sorularınızı ve görüşlerinizi aşağıdaki yorumlar bölümüne göndermekten çekinmeyin.

Share this Post
0 0 votes
Article Rating
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
%d blogcu bunu beğendi: