ascii() {printf '%d' "'$1"}
我目前正在使用这个函数将字符转换为ASCII,但是我只想将函数的结果存储为变量而不打印ascii。我该怎么做?(请记住,我只使用bash几个小时,如果这是一个愚蠢的问题,很抱歉。)
在巴什,之后
printf -v numval "%d" "'$1"
变量numval
(您可以使用任何其他有效的变量名)将保存位置参数1美元
中包含的字符串第一个字符的数值。
或者,您可以使用命令替换:
numval=$(printf "%d" "'$1")
请注意,这些仍然使用printf
,但不会将任何内容打印到stdout
。
正如@Charles Duffy的评论中所说,printf-v
版本更高效,但可移植性更差(标准POSIX shell不支持-v
选项)。
谢谢你的脚本!我不知道如何获取ascii值,所以“'M”救了我。我将参数传递给函数以获得返回。函数返回我用来…好吧,返回错误/状态代码。
#!/bin/sh
# posix
ascii () {
# $1 decimal ascii code return
# $2 character
eval $1=$(printf '%d' "'$2")
}
ascii cod 'M'
echo "'M' = $cod"