2010-06-01 1 views

ответ

1
for i in 1 2 3 4 
do 
    printf "param%d ................. value%d\n" $i $i 
done 
2

Это работает в ksh93. Я не знаю о более ранних версиях.

Это будет печатать данные в столбцах с до n точек между ними

n=10 
printf "%s %s %s\n" $column1 $(
    printf '.%.0s' {1..$(($n - ${#column1}))} 
) $column2 

Вот демонстрация:

n=10; j=8 
for i in a ab abc abcd; do 
    printf "%s %s %3d\n" $i $(
     printf '.%.0s' {1..$((10 - ${#i}))} 
    ) $((j++)) 
done 

И выход:

a ......... 8 
ab ........ 9 
abc ....... 10 
abcd ...... 11 

Побольше сложный и он будет делать магические трюки:

n=20 
string="mnopqrstuvw" 
strl=${#string} 
k=0 
for i in a ab abc abcd abcde abcd abc ab a 
do 
    j=${string: -$((strl-(k++)))} 
    printf "%s %s %s\n" $i $(
     printf '.%.0s' {1..$((n - ${#i} - ${#j}))} 
    ) $j 
done 

Выход:

a ........ mnopqrstuvw 
ab ........ nopqrstuvw 
abc ........ opqrstuvw 
abcd ........ pqrstuvw 
abcde ........ qrstuvw 
abcd .......... rstuvw 
abc ............ stuvw 
ab .............. tuvw 
a ................ uvw