我试图用 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倍。这里有什么问题吗?有没有更好的办法解决这个问题?
$(...)
生成一个子 shell 来运行命令。生成子 shell 的速度很慢。请使用 printf -v output '%04x\n' "$a"
来代替。