我需要打印以下内容:
需要通过printf智能方式打印此示例
param1 ............... value1
param2 ............... value2
param3 ............... value1
param4 ............... value2
THX
答案 0 :(得分: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
答案 1 :(得分:1)
for i in 1 2 3 4
do
printf "param%d ................. value%d\n" $i $i
done