选择一种方法而不是另一种方法的原因是什么?
for sp in {1..1000}; do str=$str' '; done
printf -v str ' %0.s' {1..1000}
查看我的系统(macOS 10.15.6,bash 5.1 alpha(上的时差:
$ time { str=; for sp in {1..1000}; do str=$str' '; done; }
real 0m0.015s
user 0m0.015s
sys 0m0.000s
$ time { str=; for sp in {1..1000}; do str=$str' '; done; }
real 0m0.014s
user 0m0.014s
sys 0m0.000s
$ time { str=; for sp in {1..1000}; do str=$str' '; done; }
real 0m0.015s
user 0m0.014s
sys 0m0.000s
$
$ time { printf -v str ' %0.s' {1..1000}; }
real 0m0.005s
user 0m0.005s
sys 0m0.000s
$ time { printf -v str ' %0.s' {1..1000}; }
real 0m0.003s
user 0m0.003s
sys 0m0.000s
$ time { printf -v str ' %0.s' {1..1000}; }
real 0m0.004s
user 0m0.004s
sys 0m0.000s
$
对于这个特定的目的,printf -v str '%*s' 1000 ''
甚至更快:
$ time { printf -v str '%*s' 1000 ''; }
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$ time { printf -v str '%*s' 1000 ''; }
real 0m0.000s
user 0m0.000s
sys 0m0.000s
$
如果时间表现对你来说并不重要,那就选你喜欢的人吧。