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是否有内容来进行继续处理。

  • 相关阅读:
    单例模式(Singleton)
    cdlinux
    android 去锯齿
    ide
    图片加载内存溢出
    android AlertDialog 弹出窗
    找回 文件下载 ie 窗口
    javac 多个jar文件 用封号 隔开
    android 模拟按钮点击
    android 加载多个图片 内在溢出的问题
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/13232572.html
Copyright © 2011-2022 走看看