shell脚本 - 有没有什么方法可以将数字转换为char?

时间:2012-10-12 09:02:24

标签: bash shell

  

可能重复:
  Integer ASCII value to character in BASH using printf

我想将整数转换为ASCII字符

我们可以像这样转换java:

int i = 97;          //97 is "a" in ASCII
char c = (char) i;   //c is now "a"

但是,有没有办法做这个shell脚本?

2 个答案:

答案 0 :(得分:15)

#!/bin/bash
# chr() - converts decimal value to its ASCII character representation
# ord() - converts ASCII character to its decimal value

chr() {
  printf \\$(printf '%03o' $1)
}

ord() {
  printf '%d' "'$1"
}

ord A
echo
chr 65
echo

修改

如你所见ord()有点棘手 - 在整数前加一个引号。

  

Single Unix Specification:“如果主角是a   单引号或双引号,该值应为数值   单引号后面的字符的底层代码集   双引号“。   见printf()

(摘自http://mywiki.wooledge.org/BashFAQ/071

答案 1 :(得分:6)

declare -i i=97
c=$(printf \\$(printf '%03o' $i))
echo "char:" $c