zoukankan      html  css  js  c++  java
  • Linux 文件的行遍历

    #!/bin/bash
    
    # 字符串拼接专题
    
    name="Shell"
    url="http://c.biancheng.net/shell/"
    
    str1=$name$url  #中间不能有空格
    str2="$name $url"  #如果被双引号包围,那么中间可以有空格
    str3=$name": "$url  #中间可以出现别的字符串
    str4="$name: $url"  #这样写也可以
    str5="${name}Script: ${url}index.html"  #这个时候需要给变量名加上大括号
    
    echo "==========方式一========="
    
    context='start
    '
    # 文件读取方式一
    cat '1.c' | while read line
    do
        echo ${line}
        context="${context}${line}"
    done
    
    # 无法打印出文件中的任何内容
    :<<!
    使用的是管道符号,这使得while语句在子shell中执行,这意味着while语句内部设置的变量、数组、函数等在循环外部都不再生效。
    例如:echo haha | a=5,在命令执行结束后,变量a的值也不再是5。
    !
    
    echo $context
    
    echo "==========方式二========="
    
    # 文件读取方式二
    
    while read line
    do
        echo ${line}
        context="${context}${line}"'
    '
    done < '1.c'
    
    #成功给context赋值
    echo -e $context

    特别说明:

    如果被读的文件最后一行之后没有换行符 ,则read读取最后一行时遇到文件结束符EOF,循环即终止。

    虽然,此时$line内存有最后一行,但程序已经没有机会再处理此行内容

    解决方案

    while read line || [[ -n ${line} ]]

    这样当文件没有到最后一行时不会测试-n $line,当遇到文件结束(最后一行)时,仍然可以通过测试$line是否有内容来进行继续处理。

  • 相关阅读:
    互联网人25岁毕业 拿一万块钱月薪 (转)
    在windows平台编译openAL Android 库
    lua简单包装
    libevent 简单学习
    cocos2dx中使用tolua++使lua调用c++函数
    《OpenGL超级宝典》编程环境配置
    快速排序、归并排序、堆排序三种算法性能比较
    二叉树的三种遍历的递归与非递归算法
    boost之bind
    boost之内存管理
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/13232572.html
Copyright © 2011-2022 走看看