我想在Shell中转换104 101 108 108 111
到hello
字符串,而不使用任何外部工具。什么是最方便的方法?
有一个函数可以帮上忙:
chr() {
printf "x$(printf "%x" "$1")"
}
chr 65 # => A
这应该适用于任何POSIX shell:
#!/bin/sh
numbers="104 101 108 108 111"
# Rely on word splitting here to break up the string
printf "$(printf '%o' $numbers)n"
内部的printf
将每个十进制数转换为带前导反斜杠的8进制八进制数,然后外部的printf
将其显示为相应的字符。加上一个换行符以保持整洁。