我有一个脚本来读取文件一个字符,这是我使用的脚本
INPUT=/path/
while IFS= read -r -n1 char; do
echo $char
done < "$INPUT"
它工作正常,只是我不知道如何将每个字符存储到一个变量中,我正在寻找类似的东西
N$X=$char
其中 X = 计数或字符,$char = 字符
任何帮助,将不胜感激。谢谢!
我有一个脚本来读取文件一个字符,这是我使用的脚本
INPUT=/path/
while IFS= read -r -n1 char; do
echo $char
done < "$INPUT"
它工作正常,只是我不知道如何将每个字符存储到一个变量中,我正在寻找类似的东西
N$X=$char
其中 X = 计数或字符,$char = 字符
任何帮助,将不胜感激。谢谢!
一般来说,在bashN1
中拥有,N2
等变量并希望像使用另一个变量一样访问它们是非常糟糕的。解决这个问题的方法在于数组。以下是我将如何使用数组来解决您的问题:N$i
i
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
你可以这样做:
X=0
while IFS= read -r -n1 char; do
eval "N$X=\$char"
X=`expr $X + 1`
done < "$INPUT"
在循环结束时X0
,X1
、X2
、 等将包含已读入的各种字符。