![printf 到 n 列?](https://linux22.com/image/11422/printf%20%E5%88%B0%20n%20%E5%88%97%EF%BC%9F%20.png)
这:
dots=$(printf "%0.s." {1..10})
打印这个:
..........
。
我想知道如何进入printf
Bash 将.
s 打印到特定的列位置,比如说30
,起始列会有所不同。
例如:
Add dots ....................
Add dots dots ...............
Add dots dots dots ..........
答案1
在一个壳里
$ n=30
$ dots=$(printf "%.0s." $(seq $n))
$ echo "$dots"
..............................
所以:
$ n=30
$ str='Add dots '
$ dots=$(printf "%.0s." $(seq $((n-${#str})) ))
$ echo "$str$dots"
Add dots .....................
和:
$ n=30; str='Add dots dots '; dots=$(printf "%.0s." $(seq $((n-${#str})) )); echo "$str$dots"
Add dots dots ................
在一个函数中:
$ dots(){ printf "%s" "$2"; printf "%.0s." $( seq $(($1-${#2})) );echo; }
$ dots 30 "Add dots dots dots "
Add dots dots dots ...........
$ dots 40 "Add dots dots dots "
Add dots dots dots .....................
$ dots 33 "we hold these truths "
we hold these truths ............