【问题标题】:Break up inputs in Bash [duplicate]分解 Bash 中的输入[重复]
【发布时间】:2014-01-15 10:56:42
【问题描述】:

我希望能够将输入分解为多个字符。例如,我希望能够将“Hello World”分解为 h、e、l、l、o、[空格]、w、o、r、l、d。我正在尝试在我的 Raspberry Pi 上制作一个摩尔斯电码翻译器,如果我可以只翻译单个字符而不是对整个单词进行编码翻译,它将为我节省很多时间。这可能吗?对不起,如果我听起来好像我不知道我在说什么,因为我有点不知道。

【问题讨论】:

    标签: bash input character raspberry-pi break


    【解决方案1】:

    你为什么使用 Bash?您可以使用 Python 或 Ruby,使其更简单。 Bash 并不是真正为您正在做的事情而设计的。

    如果您必须使用 Bash,而且我相信 Bash 在嵌入式系统上可用,我会小心谨慎,这是一种方法(请参阅 How to perform a for loop on each character in a string in BASH? 了解更多信息):

    #!/bin/bash
    
    my_string="hello world"
    
    for (( i=0; i<${#my_string}; i++ )); do
      echo "${my_string:$i:1}"
    done
    
    exit 0
    

    一些用于处理字符串和数组的 Bash 资源:

    要学习 Python 和/或 Ruby:

    【讨论】:

    • 投反对票。你必须引用"${my_string:$i:1}"。为什么?因为它会因为类似my_string='thatlittle*asterisk'
    • 很好,修复了代码
    • 没有什么“吸引人”的东西。任何时候你看到一个未引用的变量,都有办法破解代码。
    • 另一种可怕但可能更便携的方式(对于其他类似 Bourne 的 shell)是在循环中使用 cut -b...
    【解决方案2】:

    x 是你的字符串 y 是产生的字符数组

    i=0
    while [ $i -lt ${#x} ]; do y[$i]=${x:$i:1};  i=$((i+1));done
    

    Bash: Split string into character array

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多