今天写cat文件,并将结果赋值到数组中时遇到个坑,while read line之后,我在do done之中进行数组赋值,最后打印发现数组为空,错误代码如下:
function testcat()
{
#读取文件
a=0
cat test | while read line
do
results[$a]=$line
((a++))
done
}
经过查找,找到以下描述”while read line 是一次性将文件信息读入并赋值给变量line ,while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量。 for是每次读取文件中一个以空格为分割符的字符串。”
多方查找加实践得出了下面的方法:
function testcat()
{
#读取文件
a=0
while read line
do
results[$a]=$line
((a++))
done < test
#按行循环输出数组
for ((i=0;i<${#results[@]};i++))
do
echo ${results[$i]}
done
}
暂时只找到了这种写法并且实验成功了,如果大佬们有好的写法,欢迎交流