bash:一次从一个字符串中读取文本

时间:2013-06-30 18:44:29

标签: linux bash file variables while-loop

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

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

它工作得很好我只能找不到如何将每个字符存储到变量中 我正在寻找像

这样的东西

N$X=$char

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

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

2 个答案:

答案 0 :(得分:2)

一般情况下,在中添加N1N2等变量,并希望像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}

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

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

答案 1 :(得分:1)

你可以这样做:

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

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