printf() 在 bash 中太慢

问题描述 投票:0回答:1

我试图用 bash 输出十六进制数字。下面的代码大约在 150 毫秒内完成:

count=0
for a in {0..15999}; do
  ((count++))
  output=$a 
  if (( count == 15 )); then
    echo -e "$output"
    ((count = 0))
  else
    echo -en "$output "
  fi
done

但是如果我将

output=$a
更改为
output=$(printf "%04x\n" $a)
代码将在 15.8 秒内结束。大约慢了100倍。这里有什么问题吗?有没有更好的办法解决这个问题?

bash printf
1个回答
0
投票

$(...)
生成一个子 shell 来运行命令。生成子 shell 的速度很慢。请使用
printf -v output '%04x\n' "$a"
来代替。

© www.soinside.com 2019 - 2024. All rights reserved.