How to iterate through each letter in a string in Unix Shell
本问题已经有最佳答案,请猛点这里访问。
我正在尝试通过read命令迭代作为输入的字符串。我试着输出每个字母的编号,然后用一个循环依次输出每个字母。例如,如果用户输入"毕加索",则输出应为:
字母1:P字母2:I字母3:C字母4:A字母5:S字母6:S字母7:O
这是我的当前代码:
1 2 3 4 5 6 7 8 9 10 11 | #!/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 |
我应该将输入放到数组中吗?我对编程循环还是个新手,但我发现不可能找出逻辑。
有什么建议吗?谢谢。
将dtmilano和patrat的答案结合起来,您将得到:
1 2 3 4 5 6 | read -p"Please enter a word:" word for i in $(seq 1 ${#word}) do echo"Letter $i: ${word:i-1:1}" done |
$word提供字符串的长度。
使用子字符串运算符
1 | ${word:i:1} |
获得单词的第i个特征。
查看bash中的seq机制
例如:
1 | seq 1 10 |
会给你
1 | 1 2 3 4 5 6 7 8 9 10 |
你可以试试字母
1 | echo {a..g} |
结果
1 | a b c d e f g |
现在你该解决你的问题了