• Linux


    1. 概述

    1. for 循环读取文件内容时, 输出被打得稀碎

    2. 场景

    1. 需求

      1. 读入文件
      2. 逐行显示
    2. 源文件

      Continuous Delivery with Docker and Jenkins
      Jenkins 2 Up and Running
      Jenkins 2.x Continuous Integration Cookbook(3rd)
      Jenkins Fundamentals  
      
    3. 脚本

      #!/bin/bash
      
      for line in `cat ${1}` 
      do 
          echo ${line}
      done 
      
      
    4. 问题

      1. 输出的结果, 是这样的

        Continuous
        Delivery
        with
        Docker
        and
        Jenkins
        Jenkins
        2
        Up
        and
        Running
        Jenkins
        2.x
        Continuous
        Integration
        Cookbook(3rd)
        Jenkins
        Fundamentals
        

    3. 解决

    1. 原因

      1. 输出前, 需要制定 ifs
    2. ifs

      1. linux 的环境变量
    3. 最终脚本

      #!/bin/bash
      
      OLD_IFS=${IFS}    
      IFS=""
      
      for line in `cat ${1}` 
      do 
          echo ${line}
      done 
      
      IFS=${OLD_IFS}
      

    4. 其他

    1. ref

      1. SHELL 读取文件的每一行内容并输出
        1. 用 while 输出, 貌似就没有这个问题...
      2. Shell中IFS用法
    2. 疑问

      1. IFS 这玩意到底是什么鬼
      2. ${1} 是 bash 脚本的参数, 如果说, 脚本里有了 awk 命令, 需要引用 $1, 到底是哪个为准呢?
    尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出
  • 相关阅读:
    Java第二次作业
    JAVA学习计划
    学生选课系统
    抽奖
    Java第二次作业
    Java第六次作业修改版
    Java第六次作业
    JAVA第五次作业
    Java第四次作业
    JAVA第三次作业
  • 原文地址:https://www.cnblogs.com/xy14/p/11484769.html
Copyright © 2020-2023  润新知