Bash:拆分字符串的每个字母

时间:2014-11-13 22:17:49

标签: string bash split

如何拆分字符串的每个字母并在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

2 个答案:

答案 0 :(得分:1)

更改

case $REPLY in

case ${REPLY:i:1} in

...提取个别角色。

答案 1 :(得分:1)

尝试这样做:

$ str=foobar; for ((i=0; i<${#str}; i++)); do echo ${str:$i:1}; done
f
o
o
a        
r

$ fold -w1 <<< foobar
f
o
o
a        
r