3

我有一个脚本来读取文件一个字符,这是我使用的脚本

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

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

N$X=$char

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

任何帮助,将不胜感激。谢谢!

4

2 回答 2

4

一般来说,在N1中拥有,N2等变量并希望像使用另一个变量一样访问它们是非常糟糕的。解决这个问题的方法在于数组。以下是我将如何使用数组来解决您的问题: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}

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

for ((k=0;k<${#string};++k)); do
    echo "Character $k is '${string:k:1}'"
done
于 2013-06-30T21:39:56.240 回答
2

你可以这样做:

X=0
while IFS= read -r -n1 char; do
    eval "N$X=\$char"
    X=`expr $X + 1`
done < "$INPUT"

在循环结束时X0X1X2、 等将包含已读入的各种字符。

于 2013-06-30T19:18:50.210 回答