寻找在Shell中将空格分隔的ASCII数字转换为字母的方便方法



我想在Shell中转换104 101 108 108 111hello字符串,而不使用任何外部工具。什么是最方便的方法?

有一个函数可以帮上忙:

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将其显示为相应的字符。加上一个换行符以保持整洁。

最新更新