(Printf“%d \ n” \'A)此代码正在打印ASCII,但是我正在使用函数,我希望函数返回ASCII,我为此感到困惑。
请帮我。

最佳答案

您可以使用POSIX实用程序od

$ echo A | tr -d "\n" | od -An -t uC
           65


hexdump

$ echo Z | tr -d "\n" | hexdump -d | head -1 | cut -d " " -f 4
00090


或者您可以遍历我想的A-z字母(此处无错误更正...):

ord() {
    local ordinal=65
    for c in {A..z};
    do
        if [ "$1" = "$c" ]
        then
            break
        fi
        let ordinal=ordinal+1
    done
    echo "$ordinal"
}

$ ord z
122


或更“ Bashy”:

ord() {
    local ordinal=65
    for c in {A..z};
    do
        [[ "$1" == "$c" ]] && break
        (( ordinal++ ))
    done
    echo "$ordinal"
}


底线:使用printf

$ ord() { LC_CTYPE=C printf '%d\n' "'$1"; }
ord A
65

关于linux - 如何在bash中编写返回不带printf的字符的ASCII的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43292840/

10-09 06:35