Linux - 小坑: IFS

时间:2019-09-08
本文章向大家介绍Linux - 小坑: IFS,主要包括Linux - 小坑: IFS使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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, 到底是哪个为准呢?

原文地址:https://www.cnblogs.com/xy14/p/11484769.html