linux - bash:一次从字符串中读取一个字符

标签 linux bash file variables while-loop

我有一个脚本可以一次读取一个文件的一个字符 这是我使用的脚本

INPUT=/path/
while IFS= read -r -n1 char; do
    echo $char
done < "$INPUT"

它工作正常只是我不知道如何将每个字符存储到一个变量中 我正在寻找类似的东西

N$X=$char

其中 X=计数或字符,$char=字符

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

一般情况下,在 中有 N1N2 等变量...并希望像 N$ii 那样访问它们是另一个变量非常糟糕。解决这个问题的方法在于数组。以下是我如何使用数组来解决您的问题:

n=()
i=0
while read -r -n1 n[i]; do
    echo "Character $i is ${n[i]}"
    ((++i))
done < "$INPUT"

此时,您的字符在数组 n 中(好吧,不是全部)。您可以使用

访问字符 k+1
${n[k]}

(记住数组索引从 0 开始)。


另一种可能性是将所有内容都放入一个字符串中,就这么简单:

string=$( < "$INPUT" )

并且您可以使用

访问字符k+1
${n:k:1}

(取从索引k开始的长度为1的子串)。循环所有字符可以这样完成:

for ((k=0;k<${#string};++k)); do
    echo "Character $k is '${string:k:1}'"
done

关于linux - bash:一次从字符串中读取一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393675/

相关文章:

为文件实现伪缓存系统的 PHP 方法

python - 如何在 python 代码中创建文件(如果可用,则默认为文本文件)

c++ - 如何使用 c-ares 将 IP 解析为主机?

linux - BASH:[](测试)行为不一致

linux - 读取 shell 脚本时如何处理未找到的文件

Linux Bash 脚本 : Declare var name from user or file input

file - 在 Electron 中保存用户数据的正确方法

linux - 如何在不使用 lsof 或 netstat 的情况下将网络连接绑定(bind)到 PID?

python - 破坏了 Ubuntu 16.04 (AWS EC2) 上的 python 依赖关系

bash - 自定义 Bash 脚本