在利用while read line读取文件时: 如果文件最后一行之后没有换行符\n,则read读取最后一行时遇到文件结束符EOF,循环即终止。 虽然,此时$line内存有最后一行,但程序已经没有机会再处理此行内容。因此导致了这个问题发生。解决方案如下: 1whileread line || [[ -n ${line} ]] 这样当文件没有到最后一行时不会测...
while read line do … done < fileread通过输入重定向,把file的第一行所有的内容赋值给变量line,循环体内的命令一般包含对变量line的处理;然后循环处理file的第二行、第三行。。。一直到file的最后一行。还记得while根据其后的命令退出状态来判断是否执行循环体吗?是的,read命令也有退出状态,当它从文件file中读到...
read通过输入重定向,把file的第一行所有的内容赋值给变量line,循环体内的命令一般包含对变量line的处理;然后循环处理file的第二行、第三行。。。一直到file的最后一行。 还记得while根据其后的命令退出状态来判断是否执行循环体吗? 是的,read命令也有退出状态,当它从文件file中读到内容时,退出状态为0,循环继续进行;...
cat "$DATAFILE" | while read line 我们可以从命令行运行脚本,它会看到文件中的每一行,包括最后一行,就好了。但是,当由自动化进程(运行在相关脚本之前生成DATAFILE的脚本)运行时,永远不会看到最后一行。 我们更新了代码以使用以下代码迭代这些行,并清除了问题: for line in `cat "$DATAFILE"` 注意:DATAFILE没有...
读文件时,读不到最后一行,在最后一行后面加了一行空的,就可以读到。while read line do echo $line fi done < $filename 办法:使用vim编辑了一下被读的文件,就可以
while read line || [ -n "$line" ] ; do echo $line ; done < filename 2、如果我使用read line逐行读取并执行(不使用eval的话,一些特殊的符号会报错) while read -r line || [ -n "$line" ] ; do eval $line ; done < filename 注: 1)while read line 读取不到最后一行的话,加上 ||...
SHELL 读不到文件的最后一行? 读文件时,读不到最后一行,在最后一行后面加了一行空的,就可以读到。 while read line do echo $line fi done < $filename 办法:使用vim编辑了一下被读的文件,就可以了,不过不知道是什么原因
while read line do echo $line done<A <A写在最后相当于给整个while do 语句加了一个约束条件,读取文件A里每行至文件尾结束 while read line<A do echo $line done <A写在前面,整个while do语句就没有约束条件, 因为 read line<A这个始终为真 表示 不停地 读取A中的第一行,赋值给参数...
while read line 是一次性将文件信息读入并赋值给变量line ,while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量。 for是每次读取文件中一个以空格为分割符的字符串。 如下示例脚本: #/bin/bash IPS="10.1.1.10 3001 ...
首先,Shell通过读取文件或标准输入(取决于是否指定文件名)将每行数据赋值给变量line。然后,执行循环内的命令,直到文件内容全部读取完毕或者手动终止。 二、使用方法 1.读取文件内的内容:使用文件名作为输入 #!/bin/bash while read line do echo line done < input.txt 上述代码会按行从input.txt文件中读取内容,...