0Pricing
DevOps Bootcamp · Ders

Betik Yazımında En İyi Uygulamalar ve Lint Denetimi

Temiz, okunabilir ve hatasız Bash betikleri yazmak için kodlama kurallarını, açıklama eklemeyi ve ShellCheck gibi araçları kullanmayı öğrenin.

Betik Yazımında En İyi Uygulamalar ve Lint Denetimi, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

Betik Yazımında En İyi Uygulamalar Neden Önemlidir?

Bash betikleri yazmak güçlü bir yöntemdir; ancak iyi alışkanlıklar olmadan betiklerin anlaşılması, bakımı ve hata ayıklaması zorlaşabilir.

En iyi uygulamalar, temiz, sağlam ve okunabilir kod yazmanıza yardımcı olan yönergelerdir. Betiklerinizi şu açılardan geliştirir:

  • Daha kolay okunur: Sizin ve başkalarının okuması kolaylaşır.
  • Bakımı daha kolaydır: Güncellemek veya düzeltmek daha basit olur.
  • Hataya daha az açıktır: Yaygın hataları önler.
  • İş birliğine daha uygundur: Kodun görünümünü ve davranışını standartlaştırır.

Anlaşılır Kod için Açıklama Satırları

Açıklamalar, kodunuzun yalnızca ne yaptığını değil, neden yaptığını açıklamak için çok önemlidir. Gelecekteki hâliniz veya diğer geliştiriciler için not görevi görürler.

Açıklamaları şunlar için kullanın:

  • Üst kısımda betiğin genel amacını açıklamak.
  • Karmaşık mantığı veya anlaşılması zor bölümleri açıklamak.
  • İşlevleri belgelemek: amaçlarını, bağımsız değişkenlerini ve dönüş değerlerini belirtmek.

Bir açıklamayı # (kare) simgesiyle başlatın.

#!/bin/bash
# This script demonstrates commenting best practices.
# Author: CoddyKit
# Date: 2023-10-27

# Function: greet_user
# Description: Prints a greeting message to the console.
# Arguments:
#   $1 - The name of the user to greet.
greet_user() {
  local name="$1" # Store the first argument in a local variable.
  echo "Hello, ${name}!" # Output the greeting message.
}

# Main script execution starts here.
echo "Script execution started."
greet_user "CoddyKit Learner" # Call the function with a specific name.
echo "Script execution finished."

Açık Adlandırma Kuralları

Anlamlı adlar, betiğinizi takip etmeyi kolaylaştırır. Yaygın döngü sayaçları (örneğin i veya j) olmadıkça tek harfli değişkenlerden kaçının.

Genel kurallar:

  • Değişkenler: Açıklayıcı adlar kullanın (örneğin user_name, log_file). Ortam değişkenleri veya genel sabitler için UPPERCASE kullanın. Yerel betik değişkenleri için lowercase_with_underscores kullanın.
  • İşlevler: Genellikle bir fiille başlayan lowercase_with_underscores biçimini kullanın (örneğin process_data, check_status).
  • Betikler: lowercase_with_hyphens biçimini kullanın (örneğin backup-script.sh).

Tutarlı Biçimlendirme ve Girintileme

Girintileme ve boşluk kullanımı gibi tutarlı biçimlendirme, okunabilirliği büyük ölçüde artırır. Girintileri tutarsız bir kitap okuduğunuzu düşünün!

Önemli noktalar:

  • Girintileme için 2 veya 4 boşluk kullanın (sekmeler genellikle önerilmez).
  • Satırları kısa tutun (uçbirimler için 80 karakterin altında olması iyi bir genel kuraldır).
  • İlgili kod bloklarını ayırmak için boş satırlar kullanın.
  • İlişkili öğeleri uygun olduğu yerlerde hizalayın.

Seçtiğiniz belirli biçemden daha önemli olan tutarlılıktır.

Sağlamlık: 'set -u' (nounset)

set -u (veya set -o nounset) seçeneği, yazım hataları veya yanlışlıkla değeri kaldırılmış değişkenlerden kaynaklanan hataları önlemek için hayat kurtarıcıdır. Betiğiniz, kendisine değer atanmamış bir değişkeni kullanmaya çalışırsa set -u betikten hemen bir hatayla çıkar.

Bu, hataları erkenden yakalamanıza ve betiğinizin ilerleyen bölümlerindeki beklenmedik davranışları önlemenize yardımcı olur.

Aşağıdaki kodu çalıştırmayı deneyin. UNSET_NAME tanımlanmadığı için kod erken çıkacak şekilde tasarlanmıştır.

#!/bin/bash
# Demonstrating 'set -u' (nounset)

set -u # Exit if an unset variable is used

MY_GREETING="Hello"
echo "${MY_GREETING}, CoddyKit!"

# This variable is NOT set. With 'set -u', the script will exit here.
echo "Your name is: ${UNSET_NAME}" 

echo "This line will NOT be reached if 'set -u' is active and UNSET_NAME is indeed unset."

Sağlamlık: 'set -o pipefail'

Komutları bir ardışık düzende (örneğin cmd1 | cmd2 | cmd3) birbirine bağladığınızda Bash normalde yalnızca ardışık düzendeki son komutun çıkış durumunu bildirir. Bu, cmd1 başarısız olurken cmd2 ve cmd3 başarılı olursa ardışık düzenin yine de başarılı görünebileceği anlamına gelir!

set -o pipefail bu davranışı değiştirir. Ardışık düzendeki herhangi bir komut başarısız olursa (sıfır olmayan bir çıkış durumu döndürürse), ardışık düzenin tamamının çıkış durumu bu sıfır olmayan durum olur.

Bu, erken aşamadaki bir komutun başarısız olduğunu hemen bildirerek ardışık düzenlerinizi daha güvenilir hâle getirir.

#!/bin/bash
# Demonstrating 'set -o pipefail'

set -o pipefail # Ensures pipe's exit status is the last non-zero command

echo "Running a failing command in a pipe:"
echo "---"

# 'false' command always fails (exit status 1).
# 'cat /dev/null' always succeeds (exit status 0).
# With 'set -o pipefail', the pipe's overall exit status will be 1 from 'false'.
false | cat /dev/null

# This line will only be reached if the pipe above succeeds.
echo "---"
echo "Script finished successfully (this line won't show if pipe failed with set -o pipefail)."

ShellCheck ile Tanışma

En iyi uygulamalar kullanılsa bile küçük sözdizimi hatalarını veya yaygın tuzakları gözden kaçırmak kolaydır. İşte ShellCheck bu noktada devreye girer!

ShellCheck, kabuk betikleri için statik analiz aracıdır (bir 'kod denetleyicisi'). Betiğinizi okur ve şunları belirtir:

  • Sözdizimi hataları.
  • Yeni başlayanların yaygın hataları.
  • İnce anlamsal sorunlar.
  • Farklı kabuklar arasındaki taşınabilirlik sorunları.

Genellikle daha ayrıntılı açıklamalara bağlantılar da içeren yararlı öneriler sunar.

Eylem Hâlinde ShellCheck: Hatalı Betik

Birkaç yaygın sorunu olan bir betiğe bakalım. Bunlar betiğin hemen çökmesine neden olmayabilir; ancak kötü uygulamalardır veya olası hatalara yol açabilirler.

Bu betiği bad_script.sh adıyla kaydettiğinizi düşünün. Üzerinde ShellCheck çalıştırmak için şunu yazmanız gerekir: shellcheck bad_script.sh

ShellCheck'i çalıştırmadan önce sorunları fark edip edemeyeceğinizi görün!

#!/bin/bash
# A script with some common issues

MY_NAME=coddykit # Variable assignment needs no space, but quoting is good for values
echo "Hello $MY_NAME!" # Missing quotes around variable expansion

if [ $1 = "admin" ]; then # Missing quotes around $1
  echo "Welcome, administrator."
fi

# A simple loop with potential issues
for file in *.txt; do # Unquoted glob could expand to multiple arguments
  echo File: $file # Missing quotes around $file
done

ShellCheck Uyarılarını Düzeltme

ShellCheck şu tür bir çıktı verir: SC2086: Double quotes missing around "$MY_NAME". Daha fazla ayrıntı için bakabileceğiniz belirli bir kod (örneğin SC2086) da çoğu zaman gösterir.

Önceki betik, ShellCheck önerilerine ve genel en iyi uygulamalara göre düzeltilmiş hâliyle şöyledir:

Sözcük bölünmesini ve yaygın hata kaynakları olan joker karakter genişletmesini önlemek için değişken genişletmelerinin ve komut ikamelerinin çevresinde çift tırnakların "" kullanıldığına dikkat edin.

#!/bin/bash
# A script with issues fixed by ShellCheck

MY_NAME="CoddyKit" # Quote variable assignment values
echo "Hello ${MY_NAME}!" # Always quote variable expansions

if [ "$1" = "admin" ]; then # Quote positional parameters like $1
  echo "Welcome, administrator."
fi

# A simple loop with corrected quoting
for file in *.txt; do 
  echo "File: ${file}" # Quote variable expansions, especially in loops
done

En İyi Uygulamaları Denetleme

Bash betikleri yazarken aşağıdakilerden hangileri iyi uygulama olarak kabul edilir?

Özet: Profesyonel Betik Yazımı

Tebrikler! Bash betiklerinizi işlevsel olmaktan çıkarıp profesyonel düzeye taşımayı öğrendiniz.

Şunları ele aldık:

  • Okunabilirlik ve sürdürülebilirlik açısından en iyi uygulamaların önemi.
  • Açıklık sağlamak için açıklamaları ve adlandırma kurallarını kullanma.
  • set -u ve set -o pipefail ile betikleri dayanıklı hâle getirme.
  • Kodunuzdaki sorunları otomatik olarak bulup iyileştiren ShellCheck aracının gücü.

Bu ilkeleri uygulayarak daha güvenilir, anlaşılır ve birlikte geliştirilmeye uygun Bash betikleri yazacaksınız. Çalışmaya devam edin!

Sıkça Sorulan Sorular

“Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersi ücretsiz mi?

Evet — “Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

“Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersinde ne öğreneceğim?

Temiz, okunabilir ve hatasız Bash betikleri yazmak için kodlama kurallarını, açıklama eklemeyi ve ShellCheck gibi araçları kullanmayı öğrenin. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Betik Yazımında En İyi Uygulamalar ve Lint Denetimi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bash Betiklerinde Hata Ayıklama (set -x, trap)
  2. Hata İşleme ve Çıkış Durumu
  3. Betik Yazımında En İyi Uygulamalar ve Lint Denetimi
  4. Bash Betiklerini Bats ile Sınama
← DevOps Bootcamp Sayfasına Dön