Bash脚本:怎样一行行地读文件(最好和最坏的方法)

用bash脚本读文件的方法有很多。请看第一部分,我使用了while循环及其后的管道命令(|)(cat $FILE | while read line; do … ),并在循环当中递增 i 的值,最后,我得到了非我所想的 i 。主要的原因是,管道命令会发起子shell来读取文件,而任何在(子shell的)while循环中的操作(例如 i ++),都会随着子shell的结束而丢失。

而第二种,也是最坏的一种,其最明显的错误就是在读文件的过程中使用了for循环(for fileline in $(cat $FILE);do ..),这样每打印一个单词就换一次行,因为for循环使用空格作为默认的IFS。

完美的方法,即第三种的while循环(while read line;do …. done < $FILE) 是最合适且最简单的一行行地读文件的方法。请看以下例子。

 

1 收藏 2 评论

关于作者:unblock

简介还没来得及写 :) 个人主页 · 我的文章 · 1

相关文章

可能感兴趣的话题



直接登录
最新评论
  • 执行原文的代码,貌似结果不太对啊。。。

    ###############################
    Line # 1: This is sample file
    Total number of lines in file: 1
    ###############################
    This
    is
    sample
    file
    This
    is
    normal
    text
    file
    ################################
    Line # 1: This is sample file
    Total number of lines in file: 2

    • unblock   2014/07/02

      你第一次和第三次的文件是一樣的,只有一行This is sample file
      第二次的文件內容多了This is normal text file
      另外,k++造成最後顯示“多一行”

跳到底部
返回顶部