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

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
- Her genişletme tırnaklı ya da yorumda gerekçeli.
- Otomasyon betiklerinde katı mod açık.
- Geçici dosyalar tekil, çıkışta temizlikli.
- Mutsuz yol testli: eksik girdi yüksek sesle kırılıyor.
İlgili okuma
- Uygulamalı: Boşluklu İsimli Betiği Düzelt.
- DevOps Foundations Modül 1 kabuk sırasını anlatır.
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.