加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux - 小坑: IFS

发布时间:2020-12-14 00:40:39 所属栏目:Linux 来源:网络整理
导读:1. 概述 for 循环读取文件内容时,输出被打得稀碎 2. 场景 需求 读入文件 逐行显示 源文件 Continuous Delivery with Docker and JenkinsJenkins 2 Up and RunningJenkins 2.x Continuous Integration Cookbook(3rd)Jenkins Fundamentals 脚本 #!/bin/bashfor

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读