#!/bin/bash
P="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
C="012345678910111213141516171819202122232425"
OUT=`echo $1 | tr $P $C`
echo $OUT
我想将字母翻译成从0开始的十进制数字。我尝试了上面提到的代码。但从输入' K'开始输出是错误的。例如,当我输入DAD时,输出为303,但是当输入为KILL时,输出为1800,这给了我错误的输出。 K应该被翻译成11但它只取1个。我的代码不适用于2位十进制数。
答案 0 :(得分:2)
简单的bash解决方案在stdin上采用字母输入 - 打印每个字母的索引
# fill P array of a-z
P=({a..z})
# fill C map of a-z to index
declare -A C
for((i=0; i < ${#P[*]}; ++i)); do
C[${P[i]}]=$i
done
# lowercase input
typeset -l line
while IFS= read -r line; do
# print index of each letter in line
for((i=0; i<${#line}; ++i)); do
echo -n "${C[${line:i:1}]}"
done
echo
done