2016-04-01 10 views
1

printf kullanarak bir bash betiği için kullanım işlevimi yazdım, ancak, benim yaptığımdan daha kolay bir yol olduğunu hayal ettiğim çok hantal bir durumdu. Ne olduğunu öğrenmek için merak ediyorum, bu yüzden bir dahaki sefere geliştirebilirim (noktayı göstermek için aşağıda gösterilen sadece 2 adet). (En sağdaki "sütununda" dize etrafında sarmak gerektiğini belirten bir yolunu olsaydıBash printf kullanarak Sütunu Sarmak için Doğru Yolu

USAGE: Blah Blah 
     -h  [Optional] Display usage information 
     -ofps  [Optional] Number of output frames per second            
          Applies to the *output* video frame rate. 

ve korumak: gibi

usage(){ 
    printf "\n\e[1m%s\x1b[0m %-5s\n" "USAGE:" "Blah Blah" 
    printf "%7s \e[1m%-15s\x1b[0m %s %s\n" "" "-h" "[Optional]" "Display usage information" 
    printf "%7s \e[1m%-15s\x1b[0m %s %s" "" "-ofps" "[Optional] Number of output frames per second" 
    printf "%-34s %s\n" "" "Applies to the *output* video frame rate." 
    exit 1 
} 

Çıktı görünür: Burada

kod kendisidir girinti) tüm satırının uzunluğu, aradığım işlevsellik olan 80 karakteri aşacak olsaydı.

Saf bash çözümleri ile ilgileniyorum, ancak özellikle printf kullanırken hala bunu yapmak için en kolay yolu ile ilgileniyorum.

cevap

1

Tipik olarak benim Kullanım komutlarımı yapıyorum, printf kullanmaz, ancak etkilidir. (. Ben de onun yerine çiğ kaçış dizilerinin tput'un kullanmak detaylar için tput(1) ve terminfo(5) manuel sayfaları kontrol) Sonra

Usage="Blah Blah [-options...] 

    options 
    $(tput bold)-h$(tput sgr0)  Display usage information 
    $(tput bold)-o<fps>$(tput sgr0) Number of output frames per second 
      Applies to the *output* video frame rate 
" 

, bunu yazdırmak istediğinizde, ben koyun:

echo 2>&1 "?Usage: $Usage"; 
exit 1 

ya da varyasyonlarını . İsterseniz, ekonun sonuna | fmt ekleyebilirsiniz. Bu sizin için kelime-sarma yapacak. Ama genellikle, büyük çok satırlı dizeyi komut dosyasının başlangıcında yapıyorum, yalnızca #!/bin/env bash'un iç belgelerinin yanı sıra kullanım iletisi olarak hareket etmesinden sonra.

İlgili konular