Kullanıcı tarafından yapılandırılması gereken birkaç değişkenli bir kabuk komut dosyası yazıyorum. Muhtemelen bir dizi soru sorarak betiği indirmek ve yapılandırmak için bir yükleyici olacaktır. Söz konusu senaryo diğer geliştiricilere yöneliktir.
Bu, çeşitli şekillerde uygulanabilir:
Betiğin içindeki yer tutucuları kullanın ve
sed
yükleme sırasında değiştirmek için kullanın (şuna benzer: /programming/415677/how-to-replace-placeholders-in-a-text-file )Artıları: Tüm değişken tanımları kod içinde yer alır. Komut dosyasını manuel olarak indirmek ve yükleyiciye bir düzenleyici tercih eden kullanıcılar için değişkenleri yapılandırmak kolaydır.
Eksileri: Değişkenleri yüklendikten sonra yükleyici aracılığıyla yeniden yapılandırmak zordur. Hatalara yatkın olacak daha karmaşık bir normal ifade oluşturmadıkça.
Bir yapılandırma dosyası , temel olarak atamalara sahip başka bir kabuk komut dosyası kullanın
source
ve eklemek için kullanın . (Ve muhtemelen içine yerleştirin~/.scriptname
? Ana komut dosyası kopyalanır/usr/local/bin
)Artıları: Betiği yeniden yapılandırmak kolaydır. Ana komut dosyasından bunu yapmak için bir parametre bile ekleyebilir (Muhtemelen ilk çözümde de işe yarar, ancak bir komut dosyasını kendisinden düzenlemek çok iyi bir fikir gibi gelmiyor)
Eksileri: Komut dosyası artık iki dosyaya bağımlıdır ve kullanıcının yapılandırma dosyasının oluşturulması için yükleyiciyi çalıştırması gerekir. Bu, otomatik olarak bir yapılandırma dosyası oluşturularak çözülebilir. Ancak, harici bir yapılandırma dosyasını bulmak, komut dosyasını indirmek, düzenlemek ve onunla yapmak isteyen kullanıcılar için daha hantal olacaktır.
Ayrıca, kurulumdan sonra yapılandırmanın kullanıcı tarafından nasıl yönetilmesi gerektiğine ilişkin birkaç seçenek:
$ Myscript yapılandırma sunucusu gibi git.host example.org $ myscript yapılandırma sunucusu.proxypath / home / johndoe / proxy $ myscript config server.httppath / home / johndoe / webEtkileşimli
$ myscript config
Sunucu ana bilgisayar adını
girin : example.org Sunucudaki proxy'nin yolunu girin: / home / johndoe / proxy
Sunucudaki http dizininin yolunu girin: / home / johndoe / webuzun seçenekli getopts
$ myscript --host example.org --proxypath / home / johndoe / proxy --httppath / home / johndoe / webBasit
$ myscript config example.org / home / johndoe / proxy / home / johndoe / web
Bunu yapmanın başka yolları var mı?
En iyi uygulamalar, zarif bir şey var mı?