2010-03-03 9 views
8

Chcę wykonać formatowanie za pomocą echa w skryptach powłoki.Czy mogę wyrównywać zmienne w ciągu znaków za pomocą echa i bash?

Oto mały fragment kodu, który daje mi ten problem:

echo -en "\rFileName : $filename : $index of $lines Completed" 

$filename jest ciągiem znaków o różnej długości, a to powoduje problemy z formatowaniem w terminalu. Jak mogę to pokonać?

Oto co mam na myśli:

FileName :  a800_102 : 6 of 6 Completed 
FileName :  ersf_1024 : 56 of 56 Completed 

chciałbym mieć format tabeli kiedy wyświetlić go na terminalu.

Odpowiedz

14

Zastosowanie printf:

printf "\rFileName : %20s : %8d of %8d Completed" $filename $index $lines 
+0

Zauważ, że jeśli ta linia jest w pętli for, trzeba dodać nowego wiersza symbol „\ n” po słowie „Completed”, czy będzie to wydrukować tylko jeden wiersz. – CodyChan