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