ascii() {printf '%d' "'$1"}
Run Code Online (Sandbox Code Playgroud)
我目前正在使用此函数将字符转换为 ASCII,但是我只想将函数的结果存储为变量而不打印 ascii。我该怎么办呢?(请记住,我总共只使用了几个小时的 bash,如果这是一个愚蠢的问题,我很抱歉。)
在 bash 中,之后
printf -v numval "%d" "'$1"
Run Code Online (Sandbox Code Playgroud)
该变量numval(您可以使用任何其他有效的变量名称)将保存位置参数中包含的字符串的第一个字符的数值$1。
或者,您可以使用命令替换:
numval=$(printf "%d" "'$1")
Run Code Online (Sandbox Code Playgroud)
请注意,它们仍然使用printf但不会将任何内容打印到stdout.
正如@Charles Duffy的评论中所述,该printf -v版本更高效,但可移植性较差(标准 POSIX shell 不支持该-v选项)。