【问题标题】:How to iterate through each letter in a string in Unix Shell [duplicate]如何在Unix Shell中遍历字符串中的每个字母[重复]
【发布时间】:2016-05-17 18:40:46
【问题描述】:

我正在尝试遍历通过 read 命令作为输入的字符串。我正在尝试输出每个字母和每个字母的数量然后应该使用循环依次输出每个字母。例如,如果用户输入“picasso”,输出应该是:

字母 1:p 字母 2:我 字母 3:c 字母 4:一个 字母 5:s 字母 6:s 字母 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

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

有什么建议吗?谢谢。

【问题讨论】:

标签: bash shell unix


【解决方案1】:

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

read -p "Please enter a word: " word

for i in $(seq 1 ${#word})
do
 echo "Letter $i: ${word:i-1:1}"
done

${#word} 给出字符串的长度。

【讨论】:

    【解决方案2】:

    使用子字符串操作符

     ${word:i:1}
    

    获取单词的第i个字符。

    【讨论】:

      【解决方案3】:

      查看 bash 中的 seq 机制

      例如:

      seq 1 10
      

      会给你

      1 2 3 4 5 6 7 8 9 10
      

      你可以试试字母

      echo {a..g}
      

      结果

       a b c d e f g
      

      现在你应该处理你的问题了

      【讨论】:

      • 你将如何使用这种方法来遍历像“Hello”这样的通用字符串?
      • @oliv 提出了我在想的解决方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-11
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2019-10-14
      相关资源
      最近更新 更多