Dünyanın en detaylı ücretsiz FDE + DevOps kütüphanesi: 140 üzeri ders, 70 üzeri lab ve 80 uzun yazı, İngilizce ve Türkçe. Öğrenmeye başla →

Boşluklu isimlerde ve sessiz arızalarda yaşayan betikler

Güncelleme

Karanlık odada monitörlerde kod

Her genişletmeyi tırnakla, katı modla hızlı kırıl, mutsuz yolu test et: gece 03.00 alarmını önleyen kabuk alışkanlıkları.

Kabuk betikleri iki ünlü şekilde kırılır: boşluklu dosya isminde boğulur ya da yarıda sessizce kırılıp başarı raporlar. İkisi de 1979'da mantıklı varsayılanlardan gelir. Üç alışkanlık çoğunu düzeltir.

Tırnakla, katı mod, trap

Her genişletmeyi tırnakla. Boşluklu yol tutan değişken tırnaksızken iki argümana bölünür. Tırnak varsayılandır; tırnaksız genişletmenin yazılı gerekçesi olur.

Otomasyonda hızlı kırıl. Katı mod betiği hatada, tanımsız değişkende ve hat borusu arızasında çöple ilerlemek yerine durdurur. Mutsuz yolu bilerek test et: eksik dosya betiği yüksek sesle durdurmalı.

Temizliği traple. Geçici dosyalar tekil isim alır, çıkışta silme kuralı olur. Sabit geçici isimli betikler iki kopya aynı anda koşunca birbirini bozar.

Çalışılmış örnek: kurgusal bir yayın betiği

Aşağıdaki bağlam kurgusaldır. Kurgusal deploy.sh betiği sürümü yolu boşluklu dizine kopyalar, sonra servisi yeniden başlatır. Tırnaksızken kopyalama yolu böler, sürümün yarısı yanlış yere iner; katı mod yokken yeniden başlatma yine başarı raporlar.

Yeniden yazım her yolu tırnaklar, katı modu açar, hazırlık dizinini mktemp artı çıkış trapiyle kurar. Test boşluklu yol ve eksik kaynaktır: ilki başarmalı, ikincisi sıfır dışı çıkışla yüksek sesle kırılmalı. Yeniden yazımdan sonra ikisi de öyle davranır.

Kontrol listesi: zamanlanabilir betik

  1. Her genişletme tırnaklı ya da yorumda gerekçeli.
  2. Otomasyon betiklerinde katı mod açık.
  3. Geçici dosyalar tekil, çıkışta temizlikli.
  4. Mutsuz yol testli: eksik girdi yüksek sesle kırılıyor.

İlgili okuma

Net yanıtlar

Sık sorulan sorular

set -euo pipefail hep doğru mu?

Otomasyonda varsayılan olarak evet. Etkileşimli yardımcılarda hayır. Hangi tür betik yazdığını bil.

Döngüm bir dosya isminde neden kırıldı?

Tırnaksız genişletme boşlukta bölündü. Güvenli olduğunu söyleyemediğin her değişken genişletmeyi tırnakla.

Geçici dosyaları güvenle nasıl temizlerim?

mktemp ile aç, çıkışta trap ile sil. /tmp içinde sabit isimler çakışır ve sızar.

Read this page in English

Okumayı sertifikaya dönüştürün

Bu yazı ücretsiz saha notudur. Sınavlar tarihli oturumlarda, 15 kişilik sınıflarda yapılır; tek fiyat tek denemeyi kapsar. Derslerin tamamı ücretsizdir.