我有一个带有 2 个参数的 bash 脚本——一个字符和一个整数。我想在 aplhabet 中打印以该整数长度的字符开头的字符(以字母表为模)
#!/bin/bash
[[ $# != 2 ]] && echo Exactly 2 argument needed && exit 1
[[ "$1" =~ ^[a-zA-Z]$ ]] || { echo Enter only one char; exit 2; }
[[ "$2" =~ ^[0-9]+$ ]] || { echo Enter integer; exit 3; }
letter="$1"
cnt="$2"
letter=`printf "%d" \'$letter`;
z=`printf "%d" \'z`
a=`printf "%d" \'a`
[[ "$1" =~ ^[[:upper:]]$ ]] && { ((letter+=32)); } # make lower
while [[ "$cnt" -gt 0 ]]; do
printf \\$(printf "%03o" "$letter")
((letter++))
[[ "$letter" -gt $z ]] && letter=$a # alphabet modulo
((cnt--))
done
echo ""
这个脚本工作得很好,但是太慢了。我必须调用 printf 程序的 2x n(int 值)。
我的问题是,是否有诸如enable printf
提高 printf 执行速度的工作解决方案或根本不使用 printf 的解决方案。
我需要使用 bash,我只想知道如何以最快的方式处理 ASCII。我在 cygwin atm 上编写脚本,因此可能会出现一些与此相关的速度故障。
这个脚本只是一个问题的说明,我不想要一些“增加标准输出刷新缓冲区大小”的解决方案。谢谢 :)