如何在Unix Shell中遍历字符串中的每个字母

Jor*_*der 4 unix bash shell

我试图通过read命令迭代作为输入的字符串.我正在尝试输出每个字母和每个字母的数量然后应该使用循环依次输出每个字母.例如,如果用户输入"picasso",则输出应为:

信1:p信2:我信3:c信4:信5:信6:信7:o

这是我目前的代码:

#!/bin/bash

# Prompt a user to enter a word and output each letter in turn.


read -p "Please enter a word: " word

for i in $word
do
 echo "Letter $i: $word"
done
Run Code Online (Sandbox Code Playgroud)

我应该将输入放入数组吗?我仍然是编程循环的新手,但我发现无法弄清楚逻辑.

有什么建议?谢谢.

oli*_*liv 11

结合dtmilano和patrat的答案会给你:

read -p "Please enter a word: " word

for i in $(seq 1 ${#word})
do
 echo "Letter $i: ${word:i-1:1}"
done
Run Code Online (Sandbox Code Playgroud)

$ {#word}为您提供字符串的长度.


Die*_*ano 6

使用子串运算符

 ${word:i:1}
Run Code Online (Sandbox Code Playgroud)

获取单词的第 i 个字符。


小智 2

查看 bash 中的 seq 机制

例如:

seq 1 10
Run Code Online (Sandbox Code Playgroud)

会给你

1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

你可以尝试用字母

echo {a..g}
Run Code Online (Sandbox Code Playgroud)

结果

 a b c d e f g
Run Code Online (Sandbox Code Playgroud)

现在你应该处理你的问题

  • 您将如何使用这种方法来循环遍历像“Hello”这样的通用字符串? (4认同)