如何将数字与每个字母相关联?

时间:2015-06-06 21:54:41

标签: bash shell variables

我想为每个字母字符设置一个数字。我通常在做这件事时得到我想要的东西

#!/bin/bash
A=4
B=6
c=5 
echo $A$A$B$c

但我需要比在每封信之前放$更简单。

2 个答案:

答案 0 :(得分:1)

我认为您最好的选择是使用关联数组。当然,如果您没有可移植性问题并且正在使用bash版本4及更高版本 你可以这样做:

#!/bin/bash

set -e

declare -A map
map[A]=4
map[B]=6
map[C]=5

STR="ABC"

echo -n "${STR}" | while IFS= read -r -n1 char; do
    echo -n ${map[${char}]}
done
echo

如果您更喜欢为每个字母创建一个变量,如示例所示,您可以使用eval命令:

#!/bin/bash

set -e

A=4
B=6
C=5

STR="ABC"

echo -n "${STR}" | while IFS= read -r -n1 char; do
    eval "echo -n \$${char}"
done

答案 1 :(得分:1)

使用tr应用翻译地图。对于您示例中的情况:

echo AABc | tr ABc 465

如果您尝试使用2位数字(例如,如果您尝试用0-25或1-26替换整个字母表),这将无法工作,但您根本不清楚您实际尝试的是什么要做。