如何编写一个在bash中返回没有printf的字符ASCII的函数

时间:2017-04-08 10:24:12

标签: linux bash

(Printf“%d \ n”\'A)此代码正在打印ASCII但是我正在使用函数我希望函数返回ASCII我正在努力解决这个问题。 请帮帮我。

1 个答案:

答案 0 :(得分:1)

您可以使用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