【发布时间】:2014-11-13 22:17:49
【问题描述】:
如何拆分字符串的每个字母并在 case 语句中对其进行评估?我希望能够输入诸如“TEST TEST”之类的回复并返回:-....-SP-....-
它基本上是一个莫尔斯电码翻译器。这就是我所拥有的。我认为问题出在 printf 语句中,但我无法弄清楚。它没有正确解析单个字母。它只返回 E 值。
#!/bin/bash
read -p "What would you like to translate?"
for ((i=0; i<${#REPLY};i++))
do
case $REPLY in
*E*)
echo "." ;;
*S*)
echo "..." ;;
*T*)
echo "-" ;;
*' '*)
echo "SP" ;;
esac
printf "code: %s" "{$REPLY:i:1}]}" {$REPLY:i:1}
done
【问题讨论】:
-
${REPLY:i:1},而不是{$REPLY:i:1}在您的printfs 中,顺便说一句。 -
另外,如果您一次迭代一个字符,则无需测试
*E*),而只需测试E)。